-
索引優(yōu)化的方案
- 使用explain分析語(yǔ)句
- 針對(duì)常用的where , order by 字段添加索引
- 不要使用超過(guò)3個(gè)索引在同一張表
- 不要查詢多余字段 , 盡量使用覆蓋索引
- 避免索引失效的情況 : 最左前綴
- left join左邊的表要使用相對(duì)小的表
-
列舉索引失效的情況
- 違背最左前綴
- like + "%.."
- 查詢條件不要使用表達(dá)式或者mysql函數(shù)
- 字符字段查詢不使用引號(hào)
-
對(duì)索引的理解
- 什么是索引?
mysql引擎用來(lái)快速尋找記錄的數(shù)據(jù)結(jié)構(gòu)
- 索引作用 : 通過(guò)縮小查詢范圍查找目標(biāo)記錄, 提高查詢效率, 簡(jiǎn)紹查詢IO次數(shù)
- 索引分類 [引擎角度] : 主鍵 , 唯一 , 普通 , 覆蓋 , 聯(lián)合 , 全文
- 索引分類[存儲(chǔ)角度] : 聚集索引和非聚集索引
- 索引的原理 : 二分查詢 + B+樹(shù)結(jié)構(gòu) + 局部性原理 按頁(yè)大小將全部記錄分成若干個(gè)頁(yè); 從B+tree頂端開(kāi)始二分查找 ; 找到目標(biāo)記錄所在的葉節(jié)點(diǎn), 讀取整頁(yè)到內(nèi)存區(qū), 在一頁(yè)中遍歷找到需要的記錄; 查詢的IO次數(shù)等于B+樹(shù)的高度
- 索引數(shù)據(jù)結(jié)構(gòu)
- hash
- B+tree
- 局部性原理
- 系統(tǒng)分頁(yè)大小 : 一頁(yè)訪問(wèn)字節(jié)數(shù)受 32位 / 64位主存寬度影響 (8kb)
- innodbPage : 在第一點(diǎn)的基礎(chǔ)上優(yōu)化, 一頁(yè)大小默認(rèn)16kb , 減少50%的IO次數(shù)
- 索引優(yōu)化方向
注釋:
查詢優(yōu)化本質(zhì)是索引優(yōu)化