我讀過一些博客和一些與優化有關的文章,如何優化查詢。我讀了我需要使用索引,並確保使用良好的關係數據庫模式正確設置了所有主鍵和外鍵。MySQL解釋查詢理解
現在我有一個查詢我需要優化,我得到這個在EXPLAIN
:
Using where; Using temporary; Using filesort
我使用的MySQL 5.5
我知道我使用WHERE
,但不符合我的臨時表中,也不文件排序?這是什麼意思?
我讀過一些博客和一些與優化有關的文章,如何優化查詢。我讀了我需要使用索引,並確保使用良好的關係數據庫模式正確設置了所有主鍵和外鍵。MySQL解釋查詢理解
現在我有一個查詢我需要優化,我得到這個在EXPLAIN
:
Using where; Using temporary; Using filesort
我使用的MySQL 5.5
我知道我使用WHERE
,但不符合我的臨時表中,也不文件排序?這是什麼意思?
使用臨時表示MySQL需要使用一些臨時表來存儲執行查詢時計算的中間數據。
使用filesort是一種排序算法,其中MySQL無法使用索引進行排序,因此無法在內存中執行完整排序。相反,它將這種排序分成更小的塊,然後合併結果以獲得最終的排序數據。
請參考http://dev.mysql.com/doc/refman/5.0/en/explain-output.html。
我想你可能會使用ORDER BY加上一些派生表或子查詢。如果你可以粘貼你的查詢和相關的表/索引信息和EXPLAIN輸出,那將是非常好的。
謝謝你的信息 – Ken
語法:
Explain `MySQL Query`
例子:EXPLAIN SELECT * FROM categoriesG
例子:EXPLAIN EXTENDED SELECT City.Name FROM City JOIN Country ON (City.CountryCode = Country.Code) WHERE City.CountryCode = 'IND' AND Country.Continent = 'Asia'G
解釋注視着你的MySQL查詢
粘貼您的查詢。 – DRapp