我在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错误)
实际上,所有这些查询的目的是获取当前一周没有发送相关广告系列的邮件列表。
你有任何想法,因为我真的不知道怎么做!
如果查询无法执行,我可以做一些临时文件,但我更喜欢处理数据库,它更干净!
答案 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。