1. 程式人生 > 資料庫 >Mysql慢查詢優化方法及優化原則

Mysql慢查詢優化方法及優化原則

1、日期大小的比較,傳到xml中的日期格式要符合'yyyy-MM-dd',這樣才能走索引,如:'yyyy'改為'yyyy-MM-dd','yyyy-MM'改為'yyyy-MM-dd'【這樣MYSQL會轉換為日期型別】

2、條件語句中無論是等於、還是大於小於,WHERE左側的條件查詢欄位不要使用函式或表示式或數學運算

3、WHERE條件語句嘗試著調整欄位的順序提升查詢速度,如把索引欄位放在最前面、把查詢命中率高的欄位置前等

4、保證優化SQL前後其查詢結果是一致的

5、在查詢的時候通過將EXPLAIN命令寫在查詢語句前,測試語句是否有走索引【具體用法百度】

6、禁止使用SELECT * FROM

操作,應只返回需要的欄位,不需要的欄位不要返回

7、可以嘗試分解複雜的查詢,在應用層面進行表關聯,以此代替SQL層面的表關聯

8、WHERE子句和ORDER BY子句涉及到的列建索引

9、避免在WHERE子句中對欄位進行NULL判斷【可以對錶欄位改造一下,字串型欄位預設值設定為空字串,數字型欄位預設值設定為0,日期型欄位預設值設定為1990-01-01等】

10、避免在WHERE子句中使用!=<>操作符

11、避免在WHERE子句中使用OR操作符

12、BETWEEN AND代替IN

13、LIKE '%abc%'不會走索引,而LIKE 'abc%'會走索引

14、避免對欄位進行表示式操作

15、避免對欄位進行函式操作

16、GROUP BY操作預設會對GROUP BY後面的欄位進行排序,如果你的程式不需要排序,可在GROUP BY語句後面加上ORDER BY NULL去除排序

17、如果是數值型欄位,則儘量設計為數值型欄位,不要為了方便、為了偷懶而給後面維護的同事埋坑

18、表中所有欄位設計為NOT NULL

19、返回條數固定時,用LIMIT語句限制返回記錄的條數,如只需要一條記錄,或肯定只有一條記錄符合條件,那建議加上LIMIT 1

20、對於列舉型別的欄位【即有固定羅列值的欄位】,建議使用ENUM而不是VARCHAR,如性別、星期、型別、類別等

21、對於存IP地址的欄位設計為成UNSIGNED INT

22、避免在SQL中使用NOW()CURDATE()RAND()函式【因為這種方式會導致MYSQL無法使用SQL快取】,可以轉化為通過傳入引數的方式

23、對於統計類的查詢【如查詢連續幾個月的資料總量,或查詢同比、環比等】,可以通過定時查詢並統計到統計表的方式提高查詢速度

總結

以上所述是小編給大家介紹的Mysql慢查詢優化方法及優化原則,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!