これを行うクエリがあります:
SELECT `threaded_comments`.* FROM `threaded_comments` WHERE `threaded_comments`.`parent_id` IN (4, 5)
また、parent_id 列に INDEX を設定しました。
クエリで 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 に欠けているものでしょうか?