福哥答案2020-11-22:
答案來自此連結:
如果mysql在排序的時候沒有使用到索引那麼就會輸出 using filesort。
filesort有兩種實作
1.一遍掃描
一遍掃描資料後将select需要的列資料以及排序的列資料都取出來,這樣就不需要進行第二遍掃描了。
2.兩遍掃描
第一遍掃描出需要排序的字段,然後進行排序後,根據排序結果,第二遍再掃描一下需要select的列資料。
具體采用哪種掃描是根據max_length_for_sort_data來判斷的。
如果需要的列資料一行可以放入max_length_for_sort_data則使用一遍掃描否則使用兩遍掃描。
評論