1
我需要從10MM行表中取回前300行,並計算匹配記錄的總數。OVER()vs兩個查詢 - 哪一個最有效
我可以在兩個查詢做到這一點,是這樣的:
SELECT * FROM table WHERE field = value LIMIT 300;
SELECT count(*) FROM table WHERE field = value;
或者我可以使用OVER():
SELECT *, COUNT(*) OVER() AS total FROM table WHERE field = value LIMIT 300;
這將是最有效的?我不關心是否需要運行兩個查詢,我是最有效的解決方案。我不是專家,我試圖運行一個「解釋」,但它對我沒有多大意義。這是在Amazon Redshift上運行的。
[相關](http://stackoverflow.com/q/7943233/314291) - 它似乎有快捷方法從'pg_class'中獲取PostGres中的近似行數,而不需要統計所有行。 – StuartLC
當談到性能時,首先設置*目標*,然後寫出簡單明瞭的代碼來表達你想要的*。然後*測量*表現,並且只有當它不符合目標時纔開始深入研究。 –
第一排是什麼意思?你不需要定義順序嗎?爲什麼只想要300? – Guy