誤區一字面誤區 use filesort排序,字面上理解是外部排序。 誤區二人云亦云 百度上多被大家否定不是外部排序,認為和file這個關鍵字沒關係。用的是快速排序。但是總覺得不可能這麼無緣無故叫filesort的,於是去官網查了下。 正解 官方解釋 果然,大家認為的只有一半,正解是上面兩種都有,u ...
誤區一字面誤區
use filesort排序,字面上理解是外部排序。
誤區二人云亦云
百度上多被大家否定不是外部排序,認為和file這個關鍵字沒關係。用的是快速排序。但是總覺得不可能這麼無緣無故叫filesort的,於是去官網查了下。
正解
果然,大家認為的只有一半,正解是上面兩種都有,use filesort會在記憶體中排序,但是如果結果集過大不能使用記憶體就會使用外部排序。(無論filesort底層用的哪種排序都是額外的排序,只不過記憶體排序比外部排序快一點,都需要優化sql啦~,這裡只探究filesort原理)
驗證
下載mysql源碼
直接訪問github地址https://github.com/mysql/mysql-server/進行下載或直接查看
也可以去官網下載,和下載mysql包一樣,不贅述,只需要在最後一步中Select Operating System選擇Source Code
查看源碼
拋磚引玉~由各位大佬分析一波~~~(悄悄的告訴你們,我壓根就找不到排序的c文件在哪...)
~~~~~~
原創,轉載請註明來源,翻版必究