MySQL是一個強大的開源數(shù)據(jù)庫。隨著MySQL上的應(yīng)用越來越多,MySQL逐漸遇到了瓶頸。這里提供一些關(guān)于Mysql 數(shù)據(jù)庫查詢優(yōu)化的24條優(yōu)化建議,僅供參考。

Mysql 查詢優(yōu)化
1、使用慢查詢?nèi)罩荆页鰣?zhí)行慢的查詢。

2、使用 EXPLAIN 來決定查詢功能是否合適。
3、經(jīng)常測試你的查詢,看是否需要做性能優(yōu)化
性能可能會隨著時間的變化而變化。
4、避免在整個表上使用count(*) ,它可能會將整個表鎖住。
5、保持查詢一致,這樣后續(xù)類似的查詢就能使用查詢緩存了。
6、如果合適,用 GROUP BY 代替 DISTINCT。
7、在 WHERE、GROUP BY 和 ORDER BY 的列上加上索引。
8、保證索引簡單,不要在同一列上加多個索引。
9、有時,MySQL 會選擇錯誤的索引,這種情況使用 USE INDEX。

10、使用 SQL_MODE=STRICT 來檢查問題。
11、索引字段少于5個時,UNION 操作用 LIMIT,而不是 OR。
12、使用 INSERT ON DUPLICATE KEY 或 INSERT IGNORE 來代替 UPDATE,避免 UPDATE 前需要先 SELECT。
13、使用索引字段和 ORDER BY 來代替 MAX。
14、避免使用 ORDER BY RAND()。
15、LIMIT M,N 在特定場景下會降低查詢效率,有節(jié)制使用。
16、使用 UNION 來代替 WHERE 子句中的子查詢。
17、對 UPDATE 來說,使用 SHARE MODE 來防止排他鎖。
18、重啟 MySQL 時,記得預(yù)熱數(shù)據(jù)庫,確保將數(shù)據(jù)加載到內(nèi)存,提高查詢效率。
19、使用 DROP TABLE ,然后再 CREATE TABLE ,而不是 DELETE FROM ,以刪除表中所有數(shù)據(jù)。
20、最小化你要查詢的數(shù)據(jù),只獲取你需要的數(shù)據(jù),通常來說不要使用 *。
21、考慮持久連接,而不是多次建立連接,已減少資源的消耗。
22、基準查詢,包括服務(wù)器的負載,有時一個簡單的查詢會影響其他的查詢。
23、當服務(wù)器的負載增加時,使用SHOW PROCESSLIST來查看慢的/有問題的查詢。
24、在存有生產(chǎn)環(huán)境數(shù)據(jù)副本的開發(fā)環(huán)境中,測試所有可疑的查詢。