mysql索引:possible_keys为null但键不是空

时间:2017-03-13 02:55:03

标签: mysql indexing

今天,使用复合索引存在问题,例如(name, age, DESC),现在转到查询"select * from table ThisTableName where age>15 and desc='test' "。在这种情况下,B-Tree索引不符合最左边的匹配原则,可以理解null的索引possible_keys,但是key已经显示了复合索引。为什么会这样,possible_keys代表索引可以使用,如果这个值为null,键值原则上只为null。

2 个答案:

答案 0 :(得分:0)

我认为the MySQL documentation的这段代码对此进行了解释:

  

键可能会命名不存在于索引中的索引   Possible_Keys值。如果没有可能的情况,可能会发生这种情况   索引适合查找行,但所有选定的列   通过查询是其他索引的列。也就是说,命名索引   涵盖了选定的列,因此尽管它不用于确定   要检索哪些行,索引扫描比数据更有效   行扫描。

答案 1 :(得分:0)

在我的情况下,当possible_keys为null但已设置索引时-仅删除索引并使用新名称创建索引有帮助!

std::vector<int> numbers = {32, 32, 32, 12, 12, 11, 11, 11, 9}; CHECK TABLE _table_name_ QUICK没有帮助