Possible_keys
仅考虑可能与当前查询相关的索引。您当然可能在表中有其他索引,即使它们对此查询没有任何帮助。
MySQL 考虑列中值的频率,并且可能决定不使用索引,因为您正在搜索无助于缩小行集的值。
以此类推,如果你看一本书后面的索引,你在索引中看不到“the”这个词。它只会列出书中的每个页码,这是没有意义的。在这种情况下没有理由使用索引,实际上使用索引会使搜索变慢。
同样,您正在搜索 terms empl_id=86560 AND week_number=22
,但这些特定值可能在您的表中很常见,以至于 MySQL 认为读取每一行并丢弃不匹配 的行会更经济
该术语deduction_code LIKE '%VIS%'
不能使用索引。以此类推,搜索电话簿,找到我每个人的名字中间有“VIS”的名字。这本书被分类的事实并没有帮助,你仍然需要从头到尾搜索它。
您的key
列是 NULL,因为查询决定对此查询不使用索引。另一个线索是该type
列显示“ALL”,这意味着它正在执行表扫描,读取表中的每一行。
见http://dev.mysql.com/doc/refman/5.6/en/explain-output.html#explain-join-types
您可能对我的演示文稿感兴趣,如何设计索引,真的。