select count(*) from user
where userid not in (select userid from ship where status in ('1','0'))
and field='web';
这个简单的语句似乎运行了很长时间,如何更改sql以便它可以更快地运行?感谢。
答案 0 :(得分:1)
处理大量数据时最好避免使用IN / NOT IN。假设您的用户标识列已编入索引,这样的内容可能会更快:
SELECT COUNT(DISTINCT u.userid)
FROM user u
LEFT JOIN ship s ON u.userid=s.userid AND s.status IN ('1', '0')
WHERE s.userid IS NULL AND field='web'