mysql的负向条件查询,例如not in,会不会使用索引?
其实,mysql还是会尽量利用索引。如果查询的列上有索引,并且索引能够覆盖查询所需的列,那么mysql可能会使用索引来获取结果,而不是进行全表扫描。
例如,执行语句explain select * from test_table where type not in ('login', 'register');
查看执行计划,其中使用了负向条件not in:
从上面输出可以看出,这个负向查询还是使用了索引的。
执行语句explain select * from test_table where type in ('login', 'register');
查看执行计划,其中使用正向条件in:
从输出可以看出,这个正向条件查询也使用了索引。