Mysql慢查詢優(yōu)化方法及優(yōu)化原則
1、日期大小的比較,傳到xml中的日期格式要符合'yyyy-MM-dd',這樣才能走索引,如:'yyyy'改為'yyyy-MM-dd','yyyy-MM'改為'yyyy-MM-dd'【這樣MYSQL會轉(zhuǎn)換為日期類型】
2、條件語句中無論是等于、還是大于小于,WHERE左側(cè)的條件查詢字段不要使用函數(shù)或表達式或數(shù)學(xué)運算
3、WHERE條件語句嘗試著調(diào)整字段的順序提升查詢速度,如把索引字段放在最前面、把查詢命中率高的字段置前等
4、保證優(yōu)化SQL前后其查詢結(jié)果是一致的
5、在查詢的時候通過將EXPLAIN命令寫在查詢語句前,測試語句是否有走索引【具體用法百度】
6、禁止使用SELECT * FROM操作,應(yīng)只返回需要的字段,不需要的字段不要返回
7、可以嘗試分解復(fù)雜的查詢,在應(yīng)用層面進行表關(guān)聯(lián),以此代替SQL層面的表關(guān)聯(lián)
8、WHERE子句和ORDER BY子句涉及到的列建索引
9、避免在WHERE子句中對字段進行NULL判斷【可以對表字段改造一下,字符串型字段默認值設(shè)置為空字符串,數(shù)字型字段默認值設(shè)置為0,日期型字段默認值設(shè)置為1990-01-01等】
10、避免在WHERE子句中使用!=或<>操作符
11、避免在WHERE子句中使用OR操作符
12、BETWEEN AND代替IN
13、LIKE '%abc%'不會走索引,而LIKE 'abc%'會走索引
14、避免對字段進行表達式操作
15、避免對字段進行函數(shù)操作
16、GROUP BY操作默認會對GROUP BY后面的字段進行排序,如果你的程序不需要排序,可在GROUP BY語句后面加上ORDER BY NULL去除排序
17、如果是數(shù)值型字段,則盡量設(shè)計為數(shù)值型字段,不要為了方便、為了偷懶而給后面維護的同事埋坑
18、表中所有字段設(shè)計為NOT NULL
19、返回條數(shù)固定時,用LIMIT語句限制返回記錄的條數(shù),如只需要一條記錄,或肯定只有一條記錄符合條件,那建議加上LIMIT 1
20、對于枚舉類型的字段【即有固定羅列值的字段】,建議使用ENUM而不是VARCHAR,如性別、星期、類型、類別等
21、對于存IP地址的字段設(shè)計為成UNSIGNED INT型
22、避免在SQL中使用NOW()、CURDATE()、RAND()函數(shù)【因為這種方式會導(dǎo)致MYSQL無法使用SQL緩存】,可以轉(zhuǎn)化為通過傳入?yún)?shù)的方式
23、對于統(tǒng)計類的查詢【如查詢連續(xù)幾個月的數(shù)據(jù)總量,或查詢同比、環(huán)比等】,可以通過定時查詢并統(tǒng)計到統(tǒng)計表的方式提高查詢速度
總結(jié)
以上所述是小編給大家介紹的Mysql慢查詢優(yōu)化方法及優(yōu)化原則 ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對本站網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信