天天看點

Mysql中use filesort的誤區

誤區一字面誤區

use filesort排序,字面上了解是外部排序。

誤區二人雲亦雲

百度上多被大家否定不是外部排序,認為和file這個關鍵字沒關系。用的是快速排序。但是總覺得不可能這麼無緣無故叫filesort的,于是去官網查了下。

正解

官方解釋

果然,大家認為的隻有一半,正解是上面兩種都有,use filesort會在記憶體中排序,但是如果結果集過大不能使用記憶體就會使用外部排序。(無論filesort底層用的哪種排序都是額外的排序,隻不過記憶體排序比外部排序快一點,都需要優化sql啦~,這裡隻探究filesort原理)

Mysql中use filesort的誤區

驗證

下載下傳mysql源碼

直接通路github位址https://github.com/mysql/mysql-server/進行下載下傳或直接檢視

也可以去官網下載下傳,和下載下傳mysql包一樣,不贅述,隻需要在最後一步中Select Operating System選擇Source Code

Mysql中use filesort的誤區

檢視源碼