我有一个这样做的查询:
SELECT `threaded_comments`.* FROM `threaded_comments` WHERE `threaded_comments`.`parent_id` IN (4, 5)
我还在 parent_id 列上设置了一个索引。
当我对查询进行 EXPLAIN SELECT 检查时,我得到以下信息:
`select_type`,`table`,`type`,`possible_keys`,`key`,`key_len`,`ref`,`rows`,`Extra`
'SIMPLE', 'threaded_comments', 'ALL', 'COMMENT_PARENT', NULL, NULL, NULL, 3, 'Using where'
看起来没有键用于索引的 where 子句。但是,当我做一个简单的 parent_id = 4 时,它就可以了。但是当我执行 parent_id=4 或 parent_id=5 时,它会显示相同的消息。
我发现它与 innoDB 数据库表类型有关。当在特定数据库引擎上执行 IN 操作时,MySQL 似乎不喜欢它。这可能是 EXPLAIN 工具的问题,还是 InnoDB 缺少的东西?