我有一个包含大量记录的数据库,我想找到没有存储用户项目的用户:
select `name`
from `users`
where `ID` not in (select distinct `userID` from `userItem`)
这个查询甚至不会在被 MySQL 服务器切断之前完成执行。这里有一些我不知道的巨大效率低下吗?
中有 200,000 条记录userItem
和 14,000 条记录users
。
查询解释的结果:
1 PRIMARY users ALL NULL NULL NULL NULL 13369 Using where
2 DEPENDENT SUBQUERY userItem index NULL userID 8 NULL 189861 Using where; Using index; Using temporary