SQL 優(yōu)化總結

1. 聯合索引第一個字段就用范圍查找不會走索引供炎,mysql內部可能覺得第一個字段就用范圍规揪,結果集應該很大泳姐,回表效率不高,還不 如就全表掃描 范圍查找需謹慎

雖然使用( force index)了強制走索引讓聯合索引第一個字段范圍查找也走索引匆篓,掃描的行rows看上去也少了點浑度,但是最終查找效率不一定比全表 掃描高,因為回表效率不高

加上其他索引條件 使用覆蓋索引依然能夠對sql使用效率進行優(yōu)化

2. in和or在表數據量比較大的情況會走索引鸦概,在表記錄不多的情況下會選擇全表掃描

3.like KK% 一般情況都會走索引

索引下推(Index Condition Pushdown箩张,ICP), like KK%其實就是用到了索引下推優(yōu)化 什么是索引下推了? 對于輔助的聯合索引(name,age,position)窗市,正常情況按照最左前綴原則先慷,SELECT * FROM employees WHERE name like 'LiLei%' AND age = 22 AND position ='manager' 這種情況只會走name字段索引,因為根據name字段過濾完咨察,得到的索引行里的age和 position是無序的论熙,無法很好的利用索引。 在MySQL5.6之前的版本摄狱,這個查詢只能在聯合索引里匹配到名字是 'LiLei' 開頭的索引脓诡,然后拿這些索引對應的主鍵逐個回表,到主鍵索 引上找出相應的記錄二蓝,再比對age和position這兩個字段的值是否符合誉券。 MySQL 5.6引入了索引下推優(yōu)化指厌,可以在索引遍歷過程中刊愚,對索引中包含的所有字段先做判斷,過濾掉不符合條件的記錄之后再回表踩验,可 以有效的減少回表次數鸥诽。使用了索引下推優(yōu)化后,上面那個查詢在聯合索引里匹配到名字是 'LiLei' 開頭的索引之后箕憾,同時還會在索引里過 濾age和position這兩個字段牡借,拿著過濾完剩下的索引對應的主鍵id再回表查整行數據。 索引下推會減少回表次數袭异,對于innodb引擎的表索引下推只能用于二級索引钠龙,innodb的主鍵索引(聚簇索引)樹葉子節(jié)點上保存的是全行數據,所以這個時候索引下推并不會起到減少查詢全行數據的效果御铃。

4. 為什么范圍查找Mysql沒有用索引下推優(yōu)化碴里? 估計應該是Mysql認為范圍查找過濾的結果集過大,like KK% 在絕大多數情況來看上真,過濾后的結果集比較小咬腋,所以這里Mysql選擇給 like KK% 用了索引下推優(yōu)化,當然這也不是絕對的睡互,有時like KK% 也不一定就會走索引下推根竿。

優(yōu)化總結: 1陵像、MySQL支持兩種方式的排序filesort和index,Using index是指MySQL掃描索引本身完成排序寇壳。index 效率高醒颖,filesort效率低。 2九巡、order by滿足兩種情況會使用Using index图贸。 1) order by語句使用索引最左前列。 2) 使用where子句與order by子句條件列組合滿足索引最左前列冕广。 3疏日、盡量在索引列上完成排序,遵循索引建立(索引創(chuàng)建的順序)時的最左前綴法則撒汉。 4沟优、如果order by的條件不在索引列上,就會產生Using filesort睬辐。 5挠阁、能用覆蓋索引盡量用覆蓋索引 6、group by與order by很類似溯饵,其實質是先排序后分組侵俗,遵照索引創(chuàng)建順序的最左前綴法則。對于group by的優(yōu)化如果不需要排序的可以加上order by null禁止排序丰刊。注意隘谣,where高于having,能寫在where中 的限定條件就不要去having限定了啄巧。


回表


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末寻歧,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子秩仆,更是在濱河造成了極大的恐慌码泛,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澄耍,死亡現場離奇詭異噪珊,居然都是意外死亡,警方通過查閱死者的電腦和手機齐莲,發(fā)現死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進店門痢站,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人铅搓,你說我怎么就攤上這事瑟押。” “怎么了星掰?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵多望,是天一觀的道長嫩舟。 經常有香客問我,道長怀偷,這世上最難降的妖魔是什么家厌? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮椎工,結果婚禮上饭于,老公的妹妹穿的比我還像新娘。我一直安慰自己维蒙,他們只是感情好掰吕,可當我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著颅痊,像睡著了一般殖熟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斑响,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天菱属,我揣著相機與錄音,去河邊找鬼舰罚。 笑死纽门,一個胖子當著我的面吹牛,可吹牛的內容都是我干的营罢。 我是一名探鬼主播赏陵,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼愤钾!你這毒婦竟也來了瘟滨?” 一聲冷哼從身側響起候醒,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤能颁,失蹤者是張志新(化名)和其女友劉穎嵌巷,沒想到半個月后籽暇,有當地人在樹林里發(fā)現了一具尸體杠河,經...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡住拭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年祠斧,在試婚紗的時候發(fā)現自己被綠了形耗。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闻妓。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡双谆,死狀恐怖返干,靈堂內的尸體忽然破棺而出兴枯,到底是詐尸還是另有隱情,我是刑警寧澤矩欠,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布财剖,位于F島的核電站悠夯,受9級特大地震影響,放射性物質發(fā)生泄漏躺坟。R本人自食惡果不足惜沦补,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咪橙。 院中可真熱鬧夕膀,春花似錦、人聲如沸美侦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽菠剩。三九已至庞瘸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赠叼,已是汗流浹背擦囊。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嘴办,地道東北人瞬场。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像涧郊,于是被迫代替她去往敵國和親贯被。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,666評論 2 350

推薦閱讀更多精彩內容