我一直在使用SQL多年,但很少有更多的簡單插入和選擇等......所以我不是SQL專家。我想知道是否可以通過PDO優化我在SQLite上執行的更復雜的SQL語句,從而獲得一些幫助。SQLite優化多選插入
該聲明似乎工作正常,似乎需要更長的時間,我會預期(或許我只是期待太多)。
這是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典型的如何做到這一點?
其次,我應該做些什麼來儘可能有效地完成這項工作?
目前大約需要30秒才能在平均規格LAMP上獲得大約5000個用戶記錄(以及少數幾組)。
在一天結束時,表現並不是那麼重要,但我想更好地理解這個東西,所以任何見解都非常感謝。
布拉德
謝謝馬特,那太好了。你的第一個解決方案從30秒減少到5或6,這足夠好。我沒有嘗試第二種選擇,因爲我不太瞭解它,但是如果它成爲問題,我會記住它。再次感謝 – 2009-04-10 23:52:00