Day 43 索引
目錄
- 索引
- 什么是索引:
- 為什么需要索引:
- 索引的影響
- 什么樣的數(shù)據(jù)應(yīng)該添加索引:
- 磁盤IO
- 索引數(shù)據(jù)結(jié)構(gòu)
- 最左匹配原則
- 聚集索引
- 輔助索引
- 覆蓋查詢
- 回表查詢
- 結(jié)論:
- 創(chuàng)建索引的語(yǔ)法
- 聯(lián)合索引
- 刪除索引
索引
什么是索引:
? 可以理解為搜索引導(dǎo),索引是一個(gè)特殊的數(shù)據(jù)結(jié)構(gòu),期存儲(chǔ)的是數(shù)據(jù)的關(guān)鍵信息與詳細(xì)信息的位置對(duì)應(yīng)關(guān)系
為什么需要索引:
? 加速查詢,當(dāng)數(shù)據(jù)量非常大的時(shí)候,查詢一個(gè)數(shù)據(jù)是非常慢的
索引的影響
什么樣的數(shù)據(jù)應(yīng)該添加索引:
查詢操作較多寫入較少并且數(shù)據(jù)鏈很大時(shí)
查詢與寫入操作的占比大于10:1
本質(zhì)上索引原理是因可能的減小搜索范圍
磁盤IO
? 平均查找一個(gè)數(shù)據(jù)需要花費(fèi)9ms,cpu會(huì)被切換到其他的程序去執(zhí)行.我們要加速查詢必須要減少IO操作的次數(shù)
索引數(shù)據(jù)結(jié)構(gòu)
? b+樹(shù):
? 在b+樹(shù)種,葉子節(jié)點(diǎn)才是存儲(chǔ)正是數(shù)據(jù)的,葉子數(shù)量越多,樹(shù)的層級(jí)越高,導(dǎo)致IO次數(shù)增加,要避免這個(gè)問(wèn)題,就應(yīng)該將數(shù)據(jù)量小的數(shù)據(jù)作為索引
最左匹配原則
? 索引在查找時(shí),是按照從左往右依次比較,如果查詢語(yǔ)句沒(méi)有出現(xiàn)在最左邊的索引,將無(wú)法加速查詢
聚集索引
? 聚集索引中包含了所有字段的值,如果已指定了主鍵,主鍵就是狙擊索引,如果沒(méi)有則找一個(gè)非空且唯一的字段作為聚集索引,如果也找不到,則自動(dòng)生成一個(gè)字段作為聚集索引
? 直接查詢聚集索引,當(dāng)索引中包含了所有需要的字段時(shí),稱之為覆蓋查詢
? 聚集索引中存儲(chǔ)了所有的數(shù)據(jù)
輔助索引
? 除了聚集索引意外的都叫輔助索引
? 輔助索引中值包含當(dāng)前的索引字段和主鍵的值
覆蓋查詢
? 值得是在當(dāng)前索引結(jié)構(gòu)中就能找到所需的數(shù)據(jù),如果使用的是狙擊索引來(lái)查詢name一定是覆蓋查詢,速度最快
回表查詢
? 指得是在當(dāng)前索引結(jié)構(gòu)中找不到所需的數(shù)據(jù),需要通過(guò)id去聚集索引中查詢,速度慢于聚集索引
結(jié)論:
使用占用空間最小的字段來(lái)作為索引
不要在一行中存儲(chǔ)太多的數(shù)據(jù)
盡量使用覆蓋查詢
如果字段區(qū)分度低(重復(fù)度高),建立素銀是沒(méi)有意義的,翻過(guò)來(lái)說(shuō)應(yīng)該
在模糊匹配中,備份好盡量不要寫在前面
如果要查詢的數(shù)據(jù)鏈給非常大,索引頁(yè)沒(méi)辦法加速
不要在等號(hào)的左邊做運(yùn)算內(nèi)容
and語(yǔ)句中會(huì)優(yōu)先執(zhí)行有索引的字段,所以我們應(yīng)該在and語(yǔ)句用包含一個(gè)具備索引的字段(與位置無(wú)關(guān))
避免使用or語(yǔ)句,or語(yǔ)句不會(huì)優(yōu)先執(zhí)行有索引的字段如果要用的話必須保證所有字段都有索引才能加速
聯(lián)合索引中,順序應(yīng)該將區(qū)分度最高的放到左邊,最低的放到右邊,查詢語(yǔ)句中必須保證最左邊的索引在查詢語(yǔ)句中
總結(jié):不是添加了索引就能提速,需要考慮索引添加的是否合理,sql語(yǔ)句是否使用到了索引
創(chuàng)建索引的語(yǔ)法
? create index 索引名字 on 表名稱(字段名)
聯(lián)合索引
? create index 索引的名字 on 表名稱(字段名,字段名)
刪除索引
? drop index 索引名稱 on 表名稱
?
轉(zhuǎn)載于:https://www.cnblogs.com/masterjian924/p/11264739.html
總結(jié)
- 上一篇: step3 . day7数据结构之二叉顺
- 下一篇: 自定义Chrome 滚动条样式