我想知道这些是如何工作的,特别是对于大型结果集。例如,DB是否可能将原始结果写入磁盘然后进行外部排序?
我也想知道如何使用LIMIT ... OFFSET。如果数据库无法利用现有索引,那么DB似乎必须对整个事物进行排序并采用原始结果集的子集。
答案 0 :(得分:4)
订购索引;如果有合适的索引,将使用。否则,他们需要按照您的想法进行排序。查询的执行计划(您可以使用EXPLAIN
或client menus获取;获取它的确切方法因DBMS而异)可能包含有关如何对查询进行排序的提示。 / p>
请参阅:
答案 1 :(得分:2)
答案 2 :(得分:1)
答案 3 :(得分:0)
你几乎拥有它的权利。如果没有准备或预先计划(即索引,或先前准备或缓存的数据),则是,必须读取为了生成正确的顺序必须考虑的所有数据,并且如果数据量为如果不能适应可用/已分配的内存,则需要进行磁盘缓存。
这是一个非常重要的性能问题,每个RDBMS都会有巧妙的方法来解决和优化它,这样你就可以使用他们的产品而不是那种劣质的“品牌X”淘汰赛。