单路排序:
查询数据时,将所有要查询的数据全部加载到内存中进行排序。
双路排序:
查询数据时,只是将排序字段和记录ID加载到内存中,排好序后在根据id回表加载数据。
单路排序占用内存大,但效率高,因为排好序后就已经是可以返回的结果了。
双路排序占用内存少,但效率要比单路排序低,因为排好序后还要回表加载数据。
如下图中的查询:
采用单路排序时,因为查询的是所有字段,会将所有字段加载到内存中,然后按照sal排序。
采用双路排序就是将主键(EMPNO)和SAL加载到内存中,按照SAL字段排好序,在根据主键去回表加载数据。
mysql内部是通过比较max_length_for_sort_data(默认1024字节)这个系统变量跟需要排序的字段长度比较来判断采用哪种排序的。
如果需要排序的字段总长度小于max_length_for_sort_data,则采用单路排序。
如果需要排序的字段总长度大于max_length_for_sort_data,则采用双路排序。
标签:双路,排好序,单路,内存,排序,加载 From: https://www.cnblogs.com/yashuadiula/p/16672458.html