刚好面试提到这个问题,深感自己基础薄弱。
问题:sql数据量大,内存无法满足,如何进行排序?
网上搜不到具体的答案,也不知道总结的对不对。
很多帖子都提到一个外部排序,采用多路归并算法。外部排序是指将数据存储在外部磁盘而不是内存中,内存中的排序是内排序。多路归并算法,简单来说就是将要排序的文件拆分成一个个小文件,然后对针对每个小文件排序,排玩序的小文件组成顺串,在针对一个一个顺串排序载入内存排序,可先检索二路排序算法,比较容易理解。
对于内排序,MySQL内部实现排序主要有3种方式,常规排序,优化排序和优先队列排序,主要涉及3种排序算法:快速排序、归并排序和堆排序。详情请见本链接。