MySQL松散索引扫描与紧凑索引扫描
什么是松散索引?
答:實(shí)際上就是當(dāng)MySQL 完全利用索引掃描來(lái)實(shí)現(xiàn)GROUP BY 的時(shí)候,并不需要掃描所有滿足條件的索引鍵即可完成操作得出結(jié)果。
要利用到松散索引掃描實(shí)現(xiàn)GROUP BY,需要至少滿足以下幾個(gè)條件:
◆ GROUP BY 條件字段必須在同一個(gè)索引中最前面的連續(xù)位置;
◆ 在使用GROUP BY 的同時(shí),只能使用MAX 和MIN 這兩個(gè)聚合函數(shù)(新版本支持更多);
◆ 如果引用到了該索引中GROUP BY 條件之外的字段條件的時(shí)候,必須以常量形式存在;
為什么松散索引掃描的效率會(huì)很高?
答:因?yàn)樵跊](méi)有WHERE 子句,也就是必須經(jīng)過(guò)全索引掃描的時(shí)候, 松散索引掃描需要讀取的鍵值數(shù)量與分組的組數(shù)量一樣多,也就是說(shuō)比實(shí)際存在的鍵值數(shù)目要少很多。而在WHERE 子句包含范圍判斷式或者等值表達(dá)式的時(shí)候, 松散索引掃描查找滿足范圍條件的每個(gè)組的第1 個(gè)關(guān)鍵字,并且再次讀取盡可能最少數(shù)量的關(guān)鍵字。
?
什么是緊湊索引?
答:緊湊索引掃描實(shí)現(xiàn)GROUP BY 和松散索引掃描的區(qū)別主要在于他需要在掃描索引的時(shí)候,讀取所有滿足條件的索引鍵,然后再根據(jù)讀取的數(shù)據(jù)來(lái)完成GROUP BY 操作得到相應(yīng)結(jié)果。
總結(jié)
以上是生活随笔為你收集整理的MySQL松散索引扫描与紧凑索引扫描的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java程序设计-飞机大战
- 下一篇: Redis实战笔记