一個朋友寫了一個查詢與以下條件:爲什麼一個查詢在postgres中比另一個查詢更快速〜25ms?
AND (SELECT count(1) FROM users_alerts_status uas
WHERE uas.alert_id = context_alert.alert_id
AND uas.user_id = 18309
AND uas.status = 'read') = 0
看到這種情況,我建議我們將其更改爲:
AND NOT EXISTS (SELECT 1 FROM users_alerts_status uas
WHERE uas.alert_id = context_alert.alert_id
AND uas.user_id = 18309
AND uas.status = 'read')
但在測試中,查詢的第一個版本是一致的20間和30ms更快(我們在重啓服務器後測試過)。從概念上講,我錯過了什麼?
比較EXPLAIN ANALYZE的輸出結果會比較有用 - 大概你就是這樣比較時間的嗎? – araqnid 2010-05-06 18:40:16