SQL Server排序算法

sam*_*m11 16 sql-server sorting

有很多排序算法,但我想知道在使用Order by和不使用SQL Server时使用哪种算法Order by.

提前致谢..

Elz*_*ugi 3

我想这取决于您选择排序的列。如果是整数,则与字符串的算法不同。另一个猜测是该列是否有索引也至关重要。

这是Mysql中文本排序的算法

原始文件排序算法的工作原理如下:根据键或表扫描读取所有行。与 WHERE 子句不匹配的行将被跳过。对于每一行,在缓冲区中存储一对值(排序键和行指针)。缓冲区的大小是 sort_buffer_size 系统变量的值。当缓冲区已满时,对其运行 qsort(快速排序)并将结果存储在临时文件中。保存指向已排序块的指针。(如果所有对都适合排序缓冲区,则不会创建临时文件。)重复前面的步骤,直到读取所有行。将最多 MERGEBUFF (7) 个区域多重合并到另一个临时文件中的一个块。重复此操作,直到第一个文件中的所有块都位于第二个文件中。重复以下操作,直到剩余块数少于 MERGEBUFF2 (15)。在最后一次多重合并时,仅将指向该行(排序键的最后部分)的指针写入结果文件。使用结果文件中的行指针按排序顺序读取行。为了优化这一点,我们读入一大块行指针,对它们进行排序,然后使用它们按排序顺序将行读入行缓冲区。缓冲区的大小是 read_rnd_buffer_size 系统变量的值。此步骤的代码位于 sql/records.cc 源文件中。