[英]view over cte or temp table?
我在暫存層中有一個表(未編制索引),該表具有接近1億行。 在數據倉庫層中,我需要從該表中選擇一定數量的行,然后與另一個表(約有5000萬行)聯接,現在我要使用cte。 從此CTE,在與其他表聯接之前再次進行了一些匯總。 所以在這里,如果使用視圖而不是cte會發生什么。 由於需要大量時間,因此我無法對其進行測試。
因此,從總體上講,在性能方面哪一個略有優勢?
cte
或temp table
或view
?
任何幫助表示贊賞。
我認為您應該使用帶有索引的本地(單號)臨時表。 因為首先您將從主表中獲取數據。 然后,您將應用一些聚合,循環和自定義邏輯。 好處不多:-
根據您的描述,CTE是“創建”一次(定義時),使用一次(聚合時)。
通常,這意味着您應將代碼保留為單個查詢,以使優化器找到最佳的執行路徑。
通常,當多次引用CTE時,實現CTE將是一個更大的勝利。 通常,您可以使用窗口函數來避開多個引用,但這是另一回事。
這是一般性建議,但並非總是如此。 將CTE實例化為臨時表可以帶來兩個好處:
第一個可能不是問題,因為您仍然有很大一部分原始行。 第二個可能會有所幫助,但這並非難事。
您可能想要創建索引的物化視圖,而不是臨時表。 這將保持最新狀態,並可能極大地提高性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.