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的字段如果有重复值,必须指定第二排序字段,如果第二排序字段还有重复值,那必须指定更多的字段,直到所有的排序字段能够指定唯一顺序。
分享到:
相关推荐
- ORDER BY子句:按照指定的列进行排序,默认升序(ASC),可以设置降序(DESC)。 例如,如果要查询科目表的所有记录,我们可以使用如下SQL语句: ```sql SELECT * FROM code; ``` 这里,`*`代表所有列,`code`...
* 数据库的默认排序规则,这一新的默认排序规则将应用于数据库中后续创建的所有列、用户定义的数据类型、变量和参数。 * 系统表中的任何 char、varchar、text、nchar、nvarchar 或 ntext 列。 * 存储过程和用户定义...
MySQL数据库中的排序功能是SQL查询中的重要组成部分,它允许用户按照特定的标准对查询结果进行有条理的组织。在不使用`ORDER BY`子句的情况下,查询结果的顺序是不确定的,因为数据库管理系统可能根据内部算法返回...
`ALL`关键字是默认选项,不改变结果集,因为默认情况下SELECT就包括所有行,包括重复行。 `INTO OUTFILE`或`INTO DUMPFILE`将查询结果导出到文件。文件会在服务器主机上创建,但不能覆盖已存在的文件。`select_list...
在Access数据库管理中,排序操作是一项基础且至关重要的任务,它可以帮助用户以特定的顺序查看和分析数据。本文将深入探讨Access数据库的排序原理、方法以及标准代码实现,旨在帮助你更好地理解和应用这一功能。 ...
- **知识点**:`INFORMATION_SCHEMA.SCHEMATA`表存储了当前数据库系统中所有数据库的信息,包括数据库名称、默认字符集、默认排序规则等。 - **操作命令**: ```sql SELECT * FROM INFORMATION_SCHEMA.SCHEMATA; ...
Oracle公司的内部数据库培训资料主要关注的是SQL SELECT语句的使用,这是SQL语言中最基础且重要的部分,用于从数据库中检索数据。以下是对这部分内容的详细解释: 1. SQL SELECT语句的功能: SQL SELECT语句的主要...
4. `v$mem_pool`:显示所有内存池的状态,如缓存区、排序区等,用于监控数据库的内存使用情况。 5. `V$deadlock_history`:记录死锁的历史信息,帮助分析和预防死锁。 6. `V$TABLESPACE`:显示表空间信息,但不...
INFORMATION_SCHEMA.SCHEMATA表包含了数据库中所有数据库的信息,例如数据库名和数据库的默认字符集。 2. INFROMATION_SCHEMA.TABLES表 INFORMATION_SCHEMA.TABLES表存储了数据库中所有表的信息,包括表名、表类型...
- 更改数据库排序规则会涉及一系列对象,包括数据库的默认排序规则、系统表中的字符列、存储过程和用户定义函数的参数和返回值,以及基于系统数据类型的用户定义数据类型。 4. **示例代码** - 修改数据库的字符集...
6. **自定义数据模型**:如果默认的模型不能满足需求,可以继承QAbstractItemModel或其子类,实现自己的数据模型。这将允许你定制数据的加载、显示和编辑行为,比如处理复杂的数据结构或自定义数据格式。 7. **信号...
SQL Server 服务器修改排序...修改 SQL Server 服务器的排序规则需要了解当前数据库环境的排序规则、确认当前数据库版本和默认安装目录、使用正确的 Setup 语句修改排序规则,并恢复 X3 数据库和恢复 X3 用户并关联。
- 默认为升序(ASC),可使用降序(DESC)对特定字段进行降序排序。 ### 聚合函数 聚合函数用于对一组值执行计算,并返回单个值。 - `COUNT()`:计算记录数。 - `MAX()`:返回最大值。 - `MIN()`:返回最小值。 - ...
- 列出所有数据库用户,并按照创建时间排序。 - **模式对象数量列表**: `SELECT owner, object_type, COUNT(*) FROM dba_objects GROUP BY owner, object_type ORDER BY owner, object_type;` - 显示每个所有者...
- `ORDER BY`子句用于对查询结果进行排序,支持升序(ASC,默认)和降序(DESC)两种方式。 通过以上详尽的解析,初学者可以系统地学习MySQL的基础操作,从而在日常的数据库管理与开发工作中更加得心应手。同时,...
- **默认行为**:如果不指定参数,`gpstate` 将显示数据库运行状态的汇总信息,非常适合日常监控。 #### 六、查看用户会话和提交的查询信息 - **查询命令**:`SELECT * FROM pg_stat_activity;` - 该表提供了关于...
- `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 ...