sql優(yōu)化3

  • Select語句優(yōu)化:
  1. 盡量避免全表掃描, where 及 order by 涉及的列上考慮建立索引
  2. 避免在SQL里做函數(shù)計算
  3. 避免索引的最左匹配原則失效
  4. 索引的范圍至少要達到range
  5. 使用覆蓋索引可以避免回表
  6. 避免在 where 子句中使用 不等于:!= 或 <>揖曾,not in 操作符落萎,會造成索引失效
  7. 禁用or,所有使用or的地方炭剪,都可以使用unit all進行替換
  8. 慎用in练链,禁止not in,使用between以及exist很多時候是一個好的選擇奴拦。in會使索引失效媒鼓。
  9. 禁止where 條件中對字段進行表達式運算及函數(shù)操作
  10. 禁用select * from table,只查詢需要的字段。
  11. 正確使用聯(lián)合索引時错妖,where中字段順序與索引順序應當一致绿鸣,且最左側(cè)字段必須避免索引失效
  12. 小表關(guān)聯(lián)大表,from <left_table> <join_type> JOIN <right_table>
    若from table1 left join table2=》table1應該是小表暂氯,talbe2應該是大表
    若from table1 right join table2=》table2應該是小表潮模,talbe1應該是大表
  13. 效率上來看:count(字段)<count(主鍵id)<count(1)≈count(),但應該注意業(yè)務邏輯的準確性痴施,即使用不同的的count時擎厢,對null的行的處理是不一樣的。且應該避免使用沒有where條件count辣吃,即全表count动遭,在有g(shù)roup by 的情況下,有時候組合索引會起到意想不到的作用
    count(
    )計數(shù)結(jié)果包括NUll
    count(1)計數(shù)結(jié)果包括NUll
    count(column)忽略Null
  14. 正確使用類型神得,避免隱式轉(zhuǎn)換厘惦,索引失效,on條件及where條件
    錯誤的例子:select * from test where tu_mdn_str=13333333333;
    正確的例子:select * from test where tu_mdn_str='13333333333';
    特別當查詢的字段是字符串時哩簿,等號右邊的條件一定要用引號引起來標明這是一個字符串宵蕉,否則會造成索引失效觸發(fā)全表掃描。
  15. 涉及到統(tǒng)計聚合類的業(yè)務卡骂,應當對歷史數(shù)據(jù)統(tǒng)計好進行存儲国裳,再組合上當前的數(shù)據(jù)進行查詢
  16. Where字句中的連接順序,MySQL采用從左往右全跨,自上而下的順序解析where子句缝左,故過濾數(shù)據(jù)多的條件往前放,最快速度縮小結(jié)果集
  17. Unit 與Unit All的選擇:Unit All不會去重,而Unit則會加上distinct渺杉,從則導致對整個臨時表的數(shù)據(jù)做唯一性校驗蛇数,這樣自然會消耗更多
  18. 禁止在一張在表使用沒有where語句,以及返回大批量的數(shù)據(jù)是越,所有大表的數(shù)據(jù)返回都應當分頁
  19. Where與having的選擇:除非一定要使用having耳舅,否則都使用where
  20. Group by: MySQL對所有GROUP BY col1,col2...的字段進行排序倚评,在某些業(yè)務場景下浦徊,并不需要排序時,則可以指定ORDER By NULL禁止排序天梧,避免排序結(jié)果的消耗
    where user_id is not null 可以使group by user_id時使用索引盔性。
  21. Order by :
    用order by子句的重點是是否會產(chǎn)生filesort,order by不按索引順序會出現(xiàn)using filesort呢岗。
    能不排序就不排序冕香。若一定要排序,優(yōu)先:通過有序索引順序掃描直接返回有序數(shù)據(jù):
    order by 條件要與where中條件一致后豫,順序一致悉尾,否則order by不會利用索引進行排序。
    其次使用filesort時挫酿,最好能使用單路排序算法進行排序构眯,max_length_for_sort_data的大小和Query 語句所取出的字段類型大小總和來判定一次掃描算法還是雙路排序算法。
    優(yōu)化filesort:加大 max_length_for_sort_data 參數(shù)的設置早龟;去掉不必要的返回字段鸵赖;增大 sort_buffer_size 參數(shù)設置
    https://blog.csdn.net/weixin_34082854/article/details/93633860
  22. Limit優(yōu)化:
    在索引排序完成排序分頁的操作,最后根據(jù)主鍵關(guān)聯(lián)回原表查詢所需要的其他列內(nèi)容;
    把limit m,n 轉(zhuǎn)換成 limit n的查詢,通過m,n計算出一個位置拄衰,使用where條件然后從這個位置開始limit n,例如:
    假設某張記錄表饵骨,主鍵連續(xù)遞增,中間不斷層翘悉,則要先根據(jù)m,nt計算出id的位置,然后使用where id >位置 limit n進行分頁
  23. 子查詢優(yōu)化:嘗試轉(zhuǎn)化成關(guān)聯(lián)查詢有時候是一個不錯的選擇居触,原則是相關(guān)子系統(tǒng)都可以轉(zhuǎn)換成關(guān)聯(lián)查詢
  24. is null妖混,is not null也無法使用索引。盡量設置初始值轮洋。
  25. like以通配符開頭('%abc..')也會導致索引失效
    通過覆蓋索引可以解決like '%字符串%'索引失效的問題制市。
  26. 范圍查詢阻斷,聯(lián)合索引的后續(xù)字段不能走索引弊予。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祥楣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌误褪,老刑警劉巖责鳍,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異兽间,居然都是意外死亡历葛,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門嘀略,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恤溶,“玉大人,你說我怎么就攤上這事帜羊≈涑蹋” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵逮壁,是天一觀的道長孵坚。 經(jīng)常有香客問我,道長窥淆,這世上最難降的妖魔是什么卖宠? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮忧饭,結(jié)果婚禮上扛伍,老公的妹妹穿的比我還像新娘。我一直安慰自己词裤,他們只是感情好刺洒,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吼砂,像睡著了一般逆航。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上渔肩,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天因俐,我揣著相機與錄音,去河邊找鬼周偎。 笑死抹剩,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蓉坎。 我是一名探鬼主播澳眷,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蛉艾!你這毒婦竟也來了钳踊?” 一聲冷哼從身側(cè)響起衷敌,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎箍土,沒想到半個月后逢享,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡吴藻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年瞒爬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沟堡。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡侧但,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出航罗,到底是詐尸還是另有隱情禀横,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布粥血,位于F島的核電站柏锄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏复亏。R本人自食惡果不足惜趾娃,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缔御。 院中可真熱鬧抬闷,春花似錦、人聲如沸耕突。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽眷茁。三九已至炕泳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間上祈,已是汗流浹背喊崖。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留雇逞,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓茁裙,卻偏偏與公主長得像塘砸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子晤锥,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容