我有這樣一個查詢:紅移:「IN子句」中的最大項?
SELECT count(id), pro.country_code
FROM profiles AS pro
WHERE id IN (SELECT profile_id FROM reports)
GROUP BY pro.country_code;
我的問題:
有多少項目可以在紅移使用條款?每次存儲實際的id而不是子sql語句的速度要快得多,對嗎?
我有這樣一個查詢:紅移:「IN子句」中的最大項?
SELECT count(id), pro.country_code
FROM profiles AS pro
WHERE id IN (SELECT profile_id FROM reports)
GROUP BY pro.country_code;
我的問題:
有多少項目可以在紅移使用條款?每次存儲實際的id而不是子sql語句的速度要快得多,對嗎?
從我所知道的沒有限制,但如果你要帶來很多數據,你可以使用存在。
SELECT count(id),
pro.country_code
FROM profiles AS pro
WHERE exists (SELECT profile_id FROM reports where pro.id=reports.profile_id)
GROUP BY pro.country_code;
它應該是更加更快
您也可以使用相交,而不是在
爲「用戶」已經說過的,你最好的表現會與一個WHERE EXISTS子句和子查詢。既然你提到性能是一個重要的考慮因素,我還應該指出更重要的性能因素就是你的表格分佈。爲了使其運行良好,您需要仔細檢查兩個表是否具有「profile_id」列作爲分配鍵,並且兩個表都使用相同的數據類型聲明瞭該列。
對子選擇返回的項目數沒有限制。至少不是在Postgres中,亞馬遜是一個分支(雖然來自一個真正的舊版本),所以不應該有任何限制。 –