mysql select的字段若为非索引字段,则查询不走索引,哪怕where里面的字段索引了也没用,请问这是怎么回事?

flash866
  • 24

一直以来,都没想到mysql居然会有这个问题。当select的字段出现一个非索引字段时,则查询就整个的不走索引,而不管我的where里面的条件字段是否已经索引。
比如 name表,里面有name和gender两个字段,其中name加了索引。则:
select name from users where name like "%%";
会走索引查询,而下面这句:
select name,gender from users where name like "%%";
则不会走索引,mysql为何如此奇葩的设计呢?

回复
阅读 5.3k
2 个回答
  1. 一般情况下 mysql 走不走索引和 select 字段没啥关系,和 whereorder 有关
  2. 当 like 出现 '%%',那必定是不走索引。所以那两条 sql 都不走索引

这个问题的答案可以手动实践得出结论,所以还不如自己手动撸一发

问出这样的问题 意味着,你压根不了解这个问题,建议你先看一下 SQL语句及索引的相关内容

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏