《高性能 MySQL 第 2 版》上讲到一个索引策略:
有一个人物信息表包含 country 和 sex 字段。虽然 sex 字段选择性很差(只包含 'm', 'f'),但是考虑到查询中经常会用到,所以创建一个多列索引:( sex,country )。即使查询条件中没有 sex 字段,也可以通过加上 AND sex IN('m', 'f') 使得查询可以用上这个多列索引。
疑问:
-
用 EXPLAIN 查看查询计划时,IN 查询并不能使用索引( EXPLAIN 输出的 key 字段为 NULL ),书上写的有问题,还是我哪儿没弄明白?
-
如果 IN 查询不能使用索引,那原因是什么? MySQL 为什么设计成 IN 查询无法使用索引?