首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >mysql 索引无效的情况

mysql 索引无效的情况

作者头像
dys
发布2018-04-02 16:25:59
发布2018-04-02 16:25:59
2.8K0
举报
文章被收录于专栏:性能与架构性能与架构

下面几种情况下,索引是不会被使用的

(1)组合索引,查询时的条件列不是组合索引中的第一个列

例如 组合索引 (a,b),查询中使用了b作为查询条件,这时是不会用到索引的,如果用a作为查询条件,则会使用索引

(2)like查询中关键字前面带有‘%’

例如 a字段为索引,使用like查询,where a like '%xxx',这时就不会使用索引

where a like 'xxx%',这时则会使用索引

而在大量模糊查询中经常会用到 '%xxx%' 这个形式,所以建议少使用like,而使用支持中文的全文检索技术 sphinx

(3)or 中如果有字段不是索引字段,则不会使用索引

例如 a字段为索引,查询 where a='x' or b='y',虽然a是索引,但b不是,这时就不会使用索引

(4)查询字符串类型的字段时,如果值不用单引号引起来,则不使用索引

例如:a字段为字符串类型,并为索引,查询 where a=111,可以准确查询,但不会使用索引

where a='111',则会使用索引

值为数字类型时,mysql会自动包装为字符串,但如果是字符,会报错,例如:

where a=xxx,这时xxx会被看做字段名,没有此字段,就会报错

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档