我有一個表,我存儲了很多產品。我用這個查詢來獲得價格高於平均水平的所有產品:PostgreSQL中的子查詢優化
select price, name from product
where price > (select avg(price) from compra)
由於我有很多產品,我需要優化查詢。任何幫助?
我有一個表,我存儲了很多產品。我用這個查詢來獲得價格高於平均水平的所有產品:PostgreSQL中的子查詢優化
select price, name from product
where price > (select avg(price) from compra)
由於我有很多產品,我需要優化查詢。任何幫助?
試試這個:
with query as (
select avg(price) as ave from product)
select price, name
from product p2, query
where p2.price > query.ave
它工作,EXPLAIN ANALYZE顯示執行此查詢時更低的時間。 –
不應該有太大的區別。奇。 –
雖然同樣的計劃?如果在其他代碼之後立即執行,可能會受益於數據緩存,這可以解釋性能改進。 –
這個查詢將不會執行好,因爲你必須看看所有產品的價格,然後才能返回任何人。這裏最好的選擇是保持一個物化視圖的平均值或近似平均值。 –