【发布时间】:2015-01-28 12:38:49
【问题描述】:
我有一个表,其中有一个列的索引,所以这样的查询:
select * from table where id in (...)
正确使用索引。
但是如果我使用相反的:
select * from table where id not in (...)
则不使用索引。问题是表有超过 10 万行,因此全表扫描非常昂贵。 NOT IN 部分并不小,它可以从表中消除大约 3/4 的行,因此优化器使用这些 id 和索引来消除行并仅对其余行运行全表扫描是有意义的.但根据 EXPLAIN 并没有发生。
有没有办法让MYSQL在第二种情况下使用索引?
【问题讨论】:
标签: mysql database optimization indexing