PostgreSQL查询速度极慢

时间:2015-02-18 09:41:03

标签: php database postgresql

我在PostgreSQL数据库中有一个表:temp有4列

(
    id int, 
    campaign character varying, 
    sender character varying, 
    date_s date
) 

已经有大约9百万条记录。现在没有索引。

问题是当我尝试做的时候:

SELECT COUNT(*) 
FROM temp 
WHERE 
    id = $idmail and 
    campaign = '$variable_campaign' AND 
    date > '$date_c' "

在100K循环中。

查询没有响应。 (我已经在PHP中设置了无限制的set_time_limit,否则我将在5分钟内得到500错误)

实际上,所有这些查询的目的是获取当前一周没有发送相关广告系列的邮件列表。

你有任何想法,因为我真的不知道怎么做!

如果查询无法执行,我可以做一些临时文件,但我更喜欢处理数据库,它更干净!

1 个答案:

答案 0 :(得分:2)

假设mails表包含id主键:

select id    
from
    temp t
    right join
    mails m using(id)
where 
    t.campaign = '$variable_campaign' and
    t.date > '$date_c' and
    t.id is null

它将返回所有未发送的邮件ID。