我想知道这些是如何工作的,特别是对于大型结果集.例如,DB是否可能将原始结果写入磁盘然后进行外部排序?
我也想知道如何使用LIMIT … OFFSET.如果数据库无法利用现有索引,则DB似乎必须对整个事物进行排序并采集原始结果集的子集.
解决方法
索引是订购的;如果有合适的索引,将使用.否则,他们需要按照你的想法进行排序.查询的执行计划(您可以通过例如
EXPLAIN
或通过
client menus获得;获取它的确切方法因DBMS而异)可能包含有关如何对查询进行排序的提示.
看到:
> MySQL: ORDER BY Optimization
> PostgreSQL: Indexes and ORDER BY
> SQL Server Indexes
> Oracle: Understanding Indexes