Mysql慢查詢優(yōu)化方法及優(yōu)化原則
1、日期大小的比較,傳到xml中的日期格式要符合'yyyy-MM-dd',這樣才能走索引,如:'yyyy'改為'yyyy-MM-dd','yyyy-MM'改為'yyyy-MM-dd'【這樣MYSQL會轉換為日期類型】
2、條件語句中無論是等于、還是大于小于,WHERE
左側的條件查詢字段不要使用函數或表達式或數學運算
3、WHERE
條件語句嘗試著調整字段的順序提升查詢速度,如把索引字段放在最前面、把查詢命中率高的字段置前等
4、保證優(yōu)化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、對于統(tǒng)計類的查詢【如查詢連續(xù)幾個月的數據總量,或查詢同比、環(huán)比等】,可以通過定時查詢并統(tǒng)計到統(tǒng)計表的方式提高查詢速度
總結
以上所述是小編給大家介紹的Mysql慢查詢優(yōu)化方法及優(yōu)化原則 ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
相關文章
MySQL定時任務不能正常執(zhí)行的原因分析及解決方法
大家好,本篇文章主要講的是MySQL定時任務不能正常執(zhí)行的原因分析及解決方法,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12如何通過sql查找所有父節(jié)點和所有子節(jié)點(以mysql為例)
這篇文章主要給大家介紹了關于如何通過sql查找所有父節(jié)點和所有子節(jié)點,本文以mysql為例,項目中遇到一個需求,要求查處菜單節(jié)點的所有節(jié)點,這里給大家總結下,需要的朋友可以參考下2023-08-08mysql創(chuàng)建用戶并賦予用戶權限詳細操作教程
這篇文章主要給大家介紹了關于mysql創(chuàng)建用戶并賦予用戶權限詳細操作的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12MySQL循環(huán)語句之while循環(huán)測試
MySQL有循環(huán)語句操作,while 循環(huán)、loop循環(huán)和repeat循環(huán),目前我只測試了 while 循環(huán),下面與大家分享下2014-07-07Mysql數據庫中數字相減 出現負數時sql 語句報錯的問題
這篇文章主要介紹了Mysql數據庫中數字相減 出現負數時sql 語句報錯的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05MySQL修改innodb_data_file_path參數的一些注意事項
這篇文章主要給大家介紹了關于MySQL修改innodb_data_file_path參數的一些注意事項,文中通過示例代碼介紹的非常詳細,對大家學習或者使用MySQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-04-04