加快我的简单sql

时间:2013-05-16 03:51:07

标签: sql postgresql postgresql-performance

select count(*) from user 
 where userid not in (select userid from ship where status in ('1','0')) 
   and field='web';

这个简单的语句似乎运行了很长时间,如何更改sql以便它可以更快地运行?感谢。

1 个答案:

答案 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'