カテゴリテーブルに外部キーcategory_idを持つMysqlテーブルproductsを使用しています
外部キー制約が定義されています (Innodb エンジン)。
EXPLAIN SELECT * from products where category_id=1; を実行すると気付きました。
外部キーを使用するため、 type=Range と Key: my_foreign_key が表示されます
しかし、EXPLAIN SELECT * from products where category_id IN (1,10); を実行すると、
全テーブル スキャンを使用します: type=ALL, Key:NULL!!!
皮肉なことに、EXPLAIN SELECT * from products where category_id IN (1,2); を実行すると、type-range と Key: My_foreign_key を使用します!
したがって、category_id が連続していない値を使用する場合に問題があると思います。
理由はありますか?
ありがとう