MySQL索引進階

組合索引

常見誤區:

表上建多個索引,就是組合索引(不是);
組合索引創建時應該把整數字段放前面(要根據查詢情況而定);
組合索引建好后,只要使用包含的字段,就會走索引(要看使用順序);

注意事項:

在where條件中,組合必須是從前往后順序寫(索引順序)才會生效,條件順序可以前后顛倒(MySQL有優化);
組合索引在設計聯合、分組、排序等復雜SQL時會變得很復雜,所以需要先explain確認再寫SQL;
在查詢中只要構造上能使用索引的話,查詢速度比不使用索引要快的多(哪怕有些無效條件),所以大表的查詢要養成先看表結構的習慣;

多表關聯

常見誤區:

關聯時小表在前面,大表在后面查詢會更快(MySQL有優化);
關聯的字段2個表都要有索引(MySQL有優化,可以使用Explain確認);
只要有索引的字段關聯就會快(還要看數據,看數據,看數據);
注意事項:
多表關聯時,關聯字段必須要確認是否可用索引;
有些優化細節,未必會適用于所有版本或者所有數據,所以編寫復雜SQL時還是要使用explain確認是走索引,尤其是在線上數據環境下;
針對不確定的數據,很有必要確認數據,查看是否有重復數據;
針對無故執行太慢的查詢,有必要確認一下關聯字段的數據,有時候沒準就是大量重復數據造成的;

笛卡爾積

笛卡爾積也叫笛卡爾乘積,是指在數學中兩個集合X和Y的笛卡尓積(Cartesian product),又稱直積,表示為X × Y,第一個對象是X的成員而第二個對象是Y的所有可能有序對的其中一個成員。
笛卡爾積可以理解為2個數據集合的遍歷結合,如果A表和B表進行關聯,但沒有設定任何關聯條件,即可產生一個笛卡爾積,例如select * from a, b
但實際情況中很多人關聯時不注意關聯字段的數據唯一性,也是很容易產生笛卡爾積,所以SQL關聯時,一定要注意要對關聯字段的數據性質和數據分布情況有一個很準確的理解;
并非所有的笛卡爾積都是不好的,有時候也可以利用笛卡爾積完成一些很有用的事情;

常見索引不生效的情況

組合索引的使用順序應該是從左到右的,中間不能空缺,例如:索引字段依次為a, b, c 那么條件中a要排在b、c的前面否則是不生效的,出現a,c則生效的部分只有字段a;
like中%位于字符串前面,如:like ‘%xxx’;
對符號左側進行運算或函數,如:where a+1>7;
使用not in 和<>操作,如:where a<>4,如果確實需要,可以使用a>4 or a<4代替,
如果有過多的or,也可能會導致索引不生效,例如where a=10 or a=20 or a=30 or a =40,此時可以用in或者union all代替;
有關null值的查詢,如:where a is null,所以應盡量給自動設置默認值;
數據類型不一致,如,a字段類型為int,但查詢時寫成where a = ‘123’;
索引類型是Hash索引,但查詢中使用了范圍查找;
MySQL估計使用全表掃描比使用索引更快,多數是數據分布等原因;

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,491評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,263評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,708評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,409評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,939評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,774評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,650評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容

  • 文 培根 讀書可以作為消遣,可以作為裝飾,也可以增長才干。 孤獨寂寞時,閱讀可以消遣。高談闊論時,知識可供裝飾。處...
    iEsiiiy藍梔閱讀 667評論 0 0
  • 離開家的時候,我覺得好輕松。 背上吉他,拾起畫本,口袋里裝著不多的積蓄。 頭也不回的浸沒在自己的世界里,眼前都是自...
    猶豫的More閱讀 458評論 0 2
  • 經濟的繁榮并不意味著收入的保證,關健在于達成目標的能力,僅以“忠誠”和“付出”來獲取工作保證的時代其實已經過去,老...
    basmile閱讀 1,209評論 0 0
  • 我接治一例口腔癌晚期病人,半個月時間滴水未進,靠吊水度日,疼痛難忍,靠嗎啡止痛,一日二次,一次二片,我接治后高位腦...
    6ef24bfd4b84閱讀 641評論 1 0