我已经使用SQL好几年了,但很少有什么比简单的插入和选择等更重要的了……所以我不是SQL专家。我想知道是否可以在优化我在SQLite上执行的更复杂的SQL语句方面得到一些帮助,从PHP到PDO。
这个陈述似乎是正确的,只是似乎比我预期的要花更长的时间(或者也许我只是期望太多了)。
这是SQL:
INSERT OR IGNORE INTO MailQueue(SubscriberID, TemplateID)
SELECT Subscribers.ID, 1 AS TemplateID
FROM Subscribers
INNER JOIN SubscriberGroups ON Subscribers.ID=SubscriberGroups.SubscriberID
WHERE SubscriberGroups.GroupID IN ( 1 , 2 , 3 )
AND Subscribers.ID NOT IN
(
SELECT Subscribers.ID FROM Subscribers
INNER JOIN SubscriberGroups ON Subscribers.ID=SubscriberGroups.SubscriberID
WHERE SubscriberGroups.GroupID IN ( 4 , 5 , 6 )
);
我得到的是一个订阅者列表,在一个或多个组中。我想将订阅者添加到邮件队列中,选择属于一个或多个组(1,2,3)的订阅者,但排除也在另一组组(4,5,6)中的订阅者。
首先,上面的SQL是如何做到这一点的典型方法吗?
其次,我应该有哪些指标才能使这项工作尽可能有效?
目前,在平均规格的LAMP上,大约需要30秒才能通过大约5000个订户记录(以及少数组)。
说到底,表现并不是那么关键,但我想更好地理解这些东西,所以非常感谢任何见解。
布拉德