我正在使用一个 Mysql 表产品,它在类别表上有一个外键 category_id
定义了外键约束(Innodb 引擎)。
我注意到当我从 category_id=1; 的产品中运行 EXPLAIN SELECT * 时
它使用外键,所以我看到 type=Range 和 Key: my_foreign_key
但是当我运行 EXPLAIN SELECT * from products where category_id IN (1,10);
它使用全表扫描:type=ALL, Key:NULL!!!
具有讽刺意味的是,当我从 category_id IN (1,2); 的产品中执行 EXPLAIN SELECT * 时 它使用类型范围和键:My_foreign_key!
所以我想当 category_id 使用不连续的值时会出现问题。
任何想法为什么?
谢谢