[英]How do databases implement SQL 'ORDER BY x'?
我想知道这些是如何在幕后工作的,尤其是对于大型结果集。 例如,数据库是否可能将原始结果写入磁盘,然后进行外部排序?
我也想知道这如何与 LIMIT...OFFSET 一起工作。 如果数据库不能利用现有索引,似乎数据库必须对整个事物进行排序并提取原始结果集的子集。
你几乎拥有它的权利。 如果没有任何准备或预先计划(即索引,或以前准备或缓存的数据),那么是的,必须读取所有必须考虑以生成正确顺序的数据,并且如果要读取的数据量无法适应可用/分配的 memory,则需要进行磁盘缓存。
这是一个不平凡的性能问题,每个 RDBMS 都会有巧妙的方法来解决和优化它,这样您就可以使用他们的产品,而不是使用劣质的“Brand X”仿冒品。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.