这是针对MySQL的索引而言。
单个字段索引时,采用该索引字段进行模糊查询时,只有左边没有%时,该索引才其效果。
请点击输入图片描述
在组合索引中,必须按字段顺序写查询条件,否则就会让索引失效,这也是最左前缀原则之一。如下:
请点击输入图片描述
索引最左原则:
如果A B C建索引:
查找走索引:
A。
A B。
A B C。
其他不走索引:
比如:
B C 。
B。
C。
1、普通索引:CREATE INDEX Student_ID ON Student(ID )
2、唯一索引:CREATE UNIQUE INDEX Student_ID2 ON Student(ID )
3、组合索引:CREATE UNIQUE INDEX Student_ID3 ON Student(NAME,AGE,PHONE )
组合索引:上面的组合采用最左原则相当于建立了:NAME,AGE,PHONE NAME,AGE NAME
select * from Student where NAME=‘小明 ’ and age =‘12’ 执行索引。
SELECT * FROM Student WHERE name like'admin%' 执行索引。
select * from Student where age =‘12’ and phone=‘123’ 不执行索引。
SELECT * FROM Student WHEREt Name like'%admin' 不执行索引。
扩展资料:
1、简单说下什么是最左匹配原则
顾名思义:最左优先,以最左边的为起点任何连续的索引都能匹配上。同时遇到范围查询(>、<、between、like)就会停止匹配。
例如:b = 2 如果建立(a,b)顺序的索引,是匹配不到(a,b)索引的;但是如果查询条件是a = 1 and b = 2或者a=1(又或者是b = 2 and b = 1)就可以,因为优化器会自动调整a,b的顺序。
再比如a = 1 and b = 2 and c >3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,因为c字段是一个范围查询,它之后的字段会停止匹配。
2、最左匹配原则的原理
最左匹配原则都是针对联合索引来说的,所以我们有必要了解一下联合索引的原理。了解了联合索引,那么为什么会有最左匹配原则这种说法也就理解了。
我们都知道索引的底层是一颗B+树,那么联合索引当然还是一颗B+树,只不过联合索引的健值数量不是一个,而是多个。构建一颗B+树只能根据一个值来构建,因此数据库依据联合索引最左的字段来构建B+树。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)