mysql如何在内部实现命令?

Dee*_*pan 5 mysql performance

Mysql是如何在内部实现的?多列排序是否会针对约束中指定的每个列多次扫描数据集一次?

Qua*_*noi 4

描述如下:

http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html

除非您有行外列 (BLOBTEXT) 或者您的SELECT列表太大,否则使用此算法:

  • 读取与子句匹配的行WHERE

  • 对于每一行,记录一个由排序键值和行位置组成的值元组,以及查询所需的列。

  • 按排序键值对元组进行排序

  • 按排序顺序检索行,但直接从排序的元组中读取所需的列,而不是再次访问表。

按多列排序不需要扫描数据集两次,因为排序所需的所有数据都可以在一次读取中获取。

请注意,MySQL如果您有一个最左侧部分与您的条件匹配的索引,则可以完全避免顺序并仅按顺序读取值ORDER BY