数据库如何实现SQL'ORDER BY x'?

sea*_*and 7 sql relational-database

我想知道这些是如何工作的,特别是对于大型结果集.例如,DB是否可能将原始结果写入磁盘然后进行外部排序?

我也想知道如何使用LIMIT ... OFFSET.如果数据库无法利用现有索引,则DB似乎必须对整个事物进行排序并采集原始结果集的子集.

out*_*tis 5

索引是有序的;如果有合适的索引,则将使用该索引。否则,他们将需要排序,如您所想。查询的执行计划(您可以使用例如EXPLAIN或通过客户端菜单获取;获取它的确切方法因 DBMS 而异)可能包含有关如何对查询进行排序的提示。

看:

  1. MySQL:ORDER BY 优化
  2. PostgreSQL:索引和 ORDER BY
  3. SQL Server 索引
  4. Oracle:了解索引