雖然讀書(shū)時(shí)有學(xué)索引,但是一直都是一知半解的狀態(tài),現(xiàn)在需要重新拾起來(lái),需要好好了解一下,一個(gè)概念一個(gè)概念的來(lái)。
學(xué)習(xí)來(lái)源:這里:http://www.jb51.net/article/89450.htm
定義:基數(shù)是數(shù)據(jù)列所包含的不同值的數(shù)量。
例如,某個(gè)數(shù)據(jù)列包含值1、3、7、4、7、3,那么它的基數(shù)就是4(只有1、3、4、7這四個(gè)數(shù))。
效率問(wèn)題:
- 索引的基數(shù)相對(duì)于數(shù)據(jù)表
行數(shù)較高
(也就是說(shuō),列中包含很多不同的值,重復(fù)的值很少)的時(shí)候,它的工作效果最好
。 - 如果某數(shù)據(jù)列含有很多不同的年齡,索引會(huì)很快地分辨數(shù)據(jù)行。如果某個(gè)數(shù)據(jù)列用于記錄性別(只有”M”和”F”兩種值),那么索引的用處就不大。
- 如果值出現(xiàn)的
幾率幾乎相等
,那么無(wú)論搜索哪個(gè)值都可能得到一半的數(shù)據(jù)行。在這些情況下,最好根本不要使用索引
,因?yàn)椴樵?xún)優(yōu)化器發(fā)現(xiàn)某個(gè)值出現(xiàn)在表的數(shù)據(jù)行中的百分比很高的時(shí)候,它一般會(huì)忽略索引,進(jìn)行全表掃描。 - 慣用的百分比界線(xiàn)是”30%”?,F(xiàn)在查詢(xún)優(yōu)化器更加復(fù)雜,把其它一些因素也考慮進(jìn)去了,因此這個(gè)百分比并不是MySQL決定選擇使用掃描還是索引的唯一因素。