我有一個表user_notifications具有1100000條記錄,我必須運行下面的查詢,但它需要超過3分鐘完成查詢我可以做些什麼來提高獲取時間。如何使這個SQL查詢更快?
SELECT `user_notifications`.`user_id`
FROM `user_notifications`
WHERE `user_notifications`.`notification_template_id` = 175
AND (DATE(sent_at) >= DATE_SUB(CURDATE(), INTERVAL 4 day))
AND `user_notifications`.`user_id` IN (
1203, 1282, 1499, 2244, 2575, 2697, 2828, 2900, 3085, 3989,
5264, 5314, 5368, 5452, 5603, 6133, 6498..
)
用戶ID在IN
塊有時可達1k。
優化我已經索引user_id
和notification_template_id
列在user_notification
表中。
比較1000多個記錄中的'user_id'值需要一些時間,即使MySQL正在使用索引。 「年齡」有多長? –
@TimBiegeleisen 2-5分鐘平均值 – Prem
您是否在user_id和notification_template_id上創建了單獨的索引,或者兩者都有?試試後者。 – wumpz