今天就跟大家聊聊有關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中怎樣優化慢查詢有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。