對於具有多個表的複雜查詢,哪種方法更好?公用表表達式還是子查詢?Amazon Redshift:複雜查詢的CTE或子查詢?
回答
子查詢比使用通用表表達式要好得多。使用多個子查詢而不是通用表表達式時,查詢分析器的性能會更好。
我不同意這個答案。我是一個新的Redshift用戶,但我寫了兩個非常簡單的查詢,一個用CTE,另一個用子查詢。當我檢查解釋計劃時,它們都是完全一樣的! 雖然它可能會在其他DBS中做出一些區別,但在Redshift中,似乎編譯器對兩者的評估方式都是相同的。所以這是您編寫代碼的個人選擇。 – 2017-11-15 01:46:39
但是請注意,重寫外連接要比使用相關子查詢要好得多。由於Redshift中沒有索引,因此強制對每一行數據執行子查詢將導致運行成本非常高昂的O.
簡單的子查詢不使用來自外部查詢的值,並且只計算一次!所以,它不會以O(n2)操作結束。 – untitled 2015-02-10 10:42:14
完全同意你的觀點:簡單的子查詢。作者沒有具體說明其中一種方式(儘管作爲與CTE的比較,隱含簡單的子查詢是正確的)。鑑於_correlated_ sub-queries的巨大負面影響,我認爲謹慎突出這個問題。 – DogBoneBlues 2015-02-11 15:29:16
我會說臨時表。在臨時表中,您可以定義DIST KEY並控制性能。 CTE可能表現不佳
- 1. CTE對於複雜查詢
- 2. 複雜的查詢使用CTE
- 3. 複雜的SQL查詢或查詢
- 4. SQL:查詢複雜的子查詢
- 5. Django查詢api:複雜子查詢
- 6. Group_concat具有複雜的查詢或子查詢輸出?
- 7. GRANT中的Redshift子查詢
- 8. nhibernate QueryOver - 複雜子查詢
- 9. 複雜查詢
- 10. 複雜查詢
- 11. 複雜查詢
- 12. 行爲CTE子查詢的
- 13. 子查詢中的CTE
- 14. DB2子查詢中的CTE
- 15. 通過PHP查詢Amazon Redshift數據庫
- 16. 優化對於CTE或子查詢
- 17. cassandra上的複雜查詢
- 18. 複雜的SQL查詢查詢
- 19. DQL複雜的查詢,嵌套查詢
- 20. 複雜的SQL查詢 - 嵌套查詢
- 21. MySQL查詢優化複雜的查詢
- 22. 在CTE查詢
- 23. 從CTE查詢
- 24. MySQL複雜查詢
- 25. SQL複雜查詢
- 26. (複雜?)LINQtoSQL查詢
- 27. Strongloop複雜查詢
- 28. 複雜Laravel查詢
- 29. MongoMapper複雜查詢
- 30. SQL查詢複雜
IIRC紅移基於(剝離?)pre-8.4 postgres版本,因此它不具有* CTE。這使得選擇更容易。 – wildplasser 2015-02-07 17:31:33
Redshift支持CTE(帶子句)。請參閱Redshift文檔[這裏](http://docs.aws.amazon.com/redshift/latest/dg/r_WITH_clause.html) – DogBoneBlues 2015-02-11 15:25:15