三、 索引
6. 添加了索引但不被使用的几种常见可能
上一讲聊了什么时候不要使用索引,但有时候使用了也不见得会被使用。
下面是几种添加了索引但不被使用的情况
1) 多列索引查询条件没有使用最左边的字段
对于创建的多列索引,如果查询条件没有使用最左边的列,索引就不会被使用。
多列索引:一个索引对应多个列
比如
我创建了这么个多列索引
create index index_deptno_loc on dept (deptno,loc);
如果where语句中有deptno则会使用索引,否则不使用
如下
2) 如果条件中有or
只要条件中有一个字段没有添加索引,则不会使用索引<??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+IDwvcD4KPHA+PHN0cm9uZz4zKSAgICDA4NDNsru21NOmPC9zdHJvbmc+PC9wPgo8cD6xyLe9y7WjrMjnufvB0MDg0M3Kx9fWt/u0rqOsxMfSu7ao0qrU2sz1vP7W0L2ryv2+3cq508PS/brF0v3Tw8bwwLSho7fx1PKyu8q508PL99L9PC9wPgo8cD4gPC9wPgo8cD48c3Ryb25nPjQpICAgIG15c3Fs08W7r8b3tcS+9raoPC9zdHJvbmc+PC9wPgo8cD7I57n7bXlzcWy5wLzGyrnTw8irse3JqMPo0qqxyMq508PL99L9v+yjrNTysrvKudPDy/fS/TwvcD4KPHA+IDwvcD4KPHA+PHN0cm9uZz7X7rrz0ru146Os0rLKx7HK1d+40Mrc1+7J7rXE0ru14zwvc3Ryb25nPjwvcD4KPHA+PHN0cm9uZz48YnI+Cjwvc3Ryb25nPjwvcD4KPHA+PHN0cm9uZz41KSAgICBsaWtloa4lYWFhoa+yu7vhyrnTw7W9y/fS/Twvc3Ryb25nPjwvcD4KPHA+1rvSqsSjuv2y6dGvtcTEo7r9JiMyMDU0MDvU2tfWt/u0rseww+ajrNTysru74cq508PL99L9oa4lYWFhoa+6zaGuX2FhYaGvtryyu7vho6E8L3A+CjxwPjwvcD4KPHA+yOfPwjwvcD4KPGJyPgo8cD48aW1nIHNyYz0="https://www.cppentry.com/upload_files/article/57/1_rifcl__.png" alt="">
应该说这是Mysql给程序员们开的一个玩笑。要是我的表数据量很大,而且又需要使用like’%%’这样的模糊查询来检索时,该怎么办??
下一章,笔者将会给大家分享解决这个问题的N种方法!