winy_lm
不知道取啥昵称
采纳率100%
2016-03-01 03:24

关于sql复合索引没有生效的问题

60
已采纳

现在有张表 t_order,其中有一些字段,我给其中a,b,c[三个均为非主键]三个字段
增加了一个复合索引,顺序也是为a,b,c....

问题:以下哪种查询是用了索引的,因为跟我之前的理解冲突了,希望大神帮忙解答一下!!
1. where a = ''
2. where a = '' and b = ''
3. where a = '' and b='' and c =''

我一直认为这三个都是用了索引的,但是我用执行计划分析了一下,发现1是没有用到
索引的,那么是哪里出了问题呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • winy_lm 不知道取啥昵称 5年前

    我的上面的是对的,后来查看执行计划又有了!!!

    点赞 评论 复制链接分享
  • liuyachao110 liuyachao110 6月前

    我看有人说是如果全表扫描比索引快的话,会走全表扫描不走索引。

    点赞 评论 复制链接分享
  • qq_37317600 一直孤独的猿 2年前

    正常情况下都会用到索引的,1没用到索引可能是因为where a=“”的时候满足条件的数据太多,mysql优化器会默认走主键的聚簇索引顺序查找全表查找数据,所以才导致你执行计划看到没有用到索引

    点赞 评论 复制链接分享
  • qq_20039385 qq_20039385 5年前

    联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。

    点赞 评论 复制链接分享

相关推荐