`

数据库select的默认排序

 
阅读更多

 oracle对无order by的语句返回的结果不进行排序,oracle此时的处理方式是按照数据的物理存储顺序来读取数据。因为rowid是每行数据的地址,所以有时候看起来会像是使用rowid排序的。但这个顺序是可能被打乱的,在表的数据被删除后,rowid会被新插入的数据占用。所以一个无order by查询结果看起来也可能是个杂乱无章的。

 

 Select 语句如果不加 “Order By”, MySQL会怎么排序呢?

* 不能依赖 MySQL 的默认排序
* 如果你想排序,总是加上 Order By
* GROUP BY 强加了 Order By,

对于 MyISAM 表
MySQL Select 默认排序是按照物理存储顺序显示的。(不进行额外排序).
也就是说
SELECT * FROM tbl – 会产生“表扫描”。如果表没有删除、替换、更新操作,记录会显示为插入的顺序。

InnoDB 表
同样的情况,会按主键的顺序排列。但是这是不靠谱的。潜规则。

“Select” 不加 “Order by”时, MySQL 会尝试以尽可能快的方法(MySQL 实际的方法不见得快)返回数据。
由于访问主键、索引大多数情况会快一些(在Cache里)所以返回的数据有可能以主键、索引的顺序输出,
这里并不会真的进行排序,主要是由于主键、索引本身就是排序放到内存的,所以连续输出时可能是某种序列。
在一些情况下消耗硬盘寻道时间最短的数据会先返回。
如果只查询单个表,在特殊的情况下是有规律的。

最后总结

“Order By 是要加的”

我们对于翻页等逻辑必须默认加上order by排序,而且order by的字段如果有重复值,必须指定第二排序字段,如果第二排序字段还有重复值,那必须指定更多的字段,直到所有的排序字段能够指定唯一顺序。

1
3
分享到:
评论

相关推荐

    数据库基础知识Select语句

    - ORDER BY子句:按照指定的列进行排序,默认升序(ASC),可以设置降序(DESC)。 例如,如果要查询科目表的所有记录,我们可以使用如下SQL语句: ```sql SELECT * FROM code; ``` 这里,`*`代表所有列,`code`...

    何更改sql2005数据库的编码方式

    * 数据库的默认排序规则,这一新的默认排序规则将应用于数据库中后续创建的所有列、用户定义的数据类型、变量和参数。 * 系统表中的任何 char、varchar、text、nchar、nvarchar 或 ntext 列。 * 存储过程和用户定义...

    MySQL数据库:排序.pptx

    MySQL数据库中的排序功能是SQL查询中的重要组成部分,它允许用户按照特定的标准对查询结果进行有条理的组织。在不使用`ORDER BY`子句的情况下,查询结果的顺序是不确定的,因为数据库管理系统可能根据内部算法返回...

    MySQL数据库中SELECT语句快速精细掌握

    `ALL`关键字是默认选项,不改变结果集,因为默认情况下SELECT就包括所有行,包括重复行。 `INTO OUTFILE`或`INTO DUMPFILE`将查询结果导出到文件。文件会在服务器主机上创建,但不能覆盖已存在的文件。`select_list...

    Aceess数据库排序操作(标准代码)

    在Access数据库管理中,排序操作是一项基础且至关重要的任务,它可以帮助用户以特定的顺序查看和分析数据。本文将深入探讨Access数据库的排序原理、方法以及标准代码实现,旨在帮助你更好地理解和应用这一功能。 ...

    数据库运维形考任务2 数据库运维.docx

    - **知识点**:`INFORMATION_SCHEMA.SCHEMATA`表存储了当前数据库系统中所有数据库的信息,包括数据库名称、默认字符集、默认排序规则等。 - **操作命令**: ```sql SELECT * FROM INFORMATION_SCHEMA.SCHEMATA; ...

    Oracle公司内部数据库培训资料-SQL SELECT

    Oracle公司的内部数据库培训资料主要关注的是SQL SELECT语句的使用,这是SQL语言中最基础且重要的部分,用于从数据库中检索数据。以下是对这部分内容的详细解释: 1. SQL SELECT语句的功能: SQL SELECT语句的主要...

    达梦数据库常用系统视图及查询语句.pdf

    4. `v$mem_pool`:显示所有内存池的状态,如缓存区、排序区等,用于监控数据库的内存使用情况。 5. `V$deadlock_history`:记录死锁的历史信息,帮助分析和预防死锁。 6. `V$TABLESPACE`:显示表空间信息,但不...

    实验2 MySQL数据库对象管理.pdf

    INFORMATION_SCHEMA.SCHEMATA表包含了数据库中所有数据库的信息,例如数据库名和数据库的默认字符集。 2. INFROMATION_SCHEMA.TABLES表 INFORMATION_SCHEMA.TABLES表存储了数据库中所有表的信息,包括表名、表类型...

    MSSQL数据库排序规则如何更改

    - 更改数据库排序规则会涉及一系列对象,包括数据库的默认排序规则、系统表中的字符列、存储过程和用户定义函数的参数和返回值,以及基于系统数据类型的用户定义数据类型。 4. **示例代码** - 修改数据库的字符集...

    qt TableView显示数据库表中的数据

    6. **自定义数据模型**:如果默认的模型不能满足需求,可以继承QAbstractItemModel或其子类,实现自己的数据模型。这将允许你定制数据的加载、显示和编辑行为,比如处理复杂的数据结构或自定义数据格式。 7. **信号...

    42-SQL Server服务器修改排序规则的方法.docx

    SQL Server 服务器修改排序...修改 SQL Server 服务器的排序规则需要了解当前数据库环境的排序规则、确认当前数据库版本和默认安装目录、使用正确的 Setup 语句修改排序规则,并恢复 X3 数据库和恢复 X3 用户并关联。

    数据库复习学习最全笔记.pdf

    - 默认为升序(ASC),可使用降序(DESC)对特定字段进行降序排序。 ### 聚合函数 聚合函数用于对一组值执行计算,并返回单个值。 - `COUNT()`:计算记录数。 - `MAX()`:返回最大值。 - `MIN()`:返回最小值。 - ...

    数据库运维说明书范文 数据库运维.docx

    - 列出所有数据库用户,并按照创建时间排序。 - **模式对象数量列表**: `SELECT owner, object_type, COUNT(*) FROM dba_objects GROUP BY owner, object_type ORDER BY owner, object_type;` - 显示每个所有者...

    mysql入门总结Java数据库

    - `ORDER BY`子句用于对查询结果进行排序,支持升序(ASC,默认)和降序(DESC)两种方式。 通过以上详尽的解析,初学者可以系统地学习MySQL的基础操作,从而在日常的数据库管理与开发工作中更加得心应手。同时,...

    GreenPlum常用数据库命令

    - **默认行为**:如果不指定参数,`gpstate` 将显示数据库运行状态的汇总信息,非常适合日常监控。 #### 六、查看用户会话和提交的查询信息 - **查询命令**:`SELECT * FROM pg_stat_activity;` - 该表提供了关于...

    数据库使用宝典(含各种SQL语句)

    - `column_list`: 排序依据的列名列表,默认为升序(ASC),也可以指定降序(DSC)。 - `table_name`: 临时表名。 ##### 3.2 插入 (INSERT) 插入语句用于向数据库表中添加新的数据记录。 - **语法**: `INSERT INTO ...

    几种数据库的数据分页

    需要注意的是,在使用 `ROWNUM` 时,只有当 `ORDER BY` 的字段是主键时,查询结果才会先排序再计算 `ROWNUM`。 #### DB2 分页 在 DB2 数据库中,数据分页可以通过 `FETCH FIRST` 语句实现: ```sql SELECT * ...

    数据库学习

    4. **字段长度**:`ORDER BY length(列名)`可以按照字段长度进行排序。 5. **删除字段**:使用`ALTER TABLE`命令删除字段,例如删除`WORK_ADDRESS1CODE`字段的SQL语句为: ``` ALTER TABLE T_KLT_MOBILIZATION ...

Global site tag (gtag.js) - Google Analytics