MySQL數(shù)據(jù)庫優(yōu)化
MySQL數(shù)據(jù)庫的優(yōu)化是怎么個情況,別著急,下面就是,大家接著了看。希望大家通過本次的閱讀,可以學到東西。
MySQL 如何優(yōu)化ORDER BY
在一些情況下,MySQL可以直接使用索引來滿足一個 ORDER BY 或 GROUP BY 子句而無需做額外的排序。
盡管 ORDER BY 不是和索引的順序準確匹配,索引還是可以被用到,只要不用的索引部分和所有的額外的 ORDER BY字段在WHERE 子句中都被包括了。下列的幾個查詢都會使用索引來解決 ORDER BY 或 GROUP BY 部分:
SELECT*FROMt1ORDERBYkey_part1,key_part2,...;
SELECT*FROMt1WHEREkey_part1=constantORDERBYkey_part2;
SELECT*FROMt1WHEREkey_part1=constantGROUPBYkey_part2;
SELECT*FROMt1ORDERBYkey_part1DESC,key_part2DESC;
SELECT*FROMt1
WHEREkey_part1=1ORDERBYkey_part1DESC,key_part2DESC;
在另一些情況下,MySQL無法使用索引來滿足 ORDER BY,盡管它會使用索引來找到記錄來匹配WHERE子句。這些情況如下:
對不同的索引鍵做 ORDER BY :
SELECT * FROM t1 ORDER BY key1, key2;
在非連續(xù)的索引鍵部分上做 ORDER BY:
SELECT * FROM t1 WHERE key2=constant ORDER BY key_part2;
同時使用了 ASC 和 DESC:
SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;
用于搜索記錄的索引鍵和做 ORDER BY 的不是同一個:
SELECT * FROM t1 WHERE key2=constant ORDER BY key1;
有很多表一起做連接,而且讀取的記錄中在 ORDER BY 中的字段都不全是來自***個非常數(shù)的表中(也就是說,在EXPLAIN分析的結果中的***個表的連接類型不是 const)。
使用了不同的 ORDER BY 和 GROUP BY 表達式。
表索引中的記錄不是按序存儲。例如,HASH 和 HEAP 表就是這樣。
文章中詳細介紹的就是MySQL對ORDER BY的優(yōu)化方法,學會了這一點,相信大家在以后的工作中用起來就信手拈來。
【編輯推薦】