2014-11-20 55 views
1

我從事市場研究工作,並且正在編寫SQL時更好地理解最佳實踐。使用WITH語句聲明臨時表格

我遇到的一種情況是使用WITH子句和使用聲明的臨時表。

在大多數情況下,我使用with條款,因爲它很容易實現(我更喜歡它級聯SELECT s)。

但是,當涉及到運行時間和效率時,使用聲明的臨時表有什麼好處嗎?我更多地尋找每個人的優點/缺點。

+1

這完全取決於您正在使用的數據庫引擎。不同的數據庫以不同的方式處理'with'(稱爲「公用表表達式」或CTE)。 – 2014-11-20 22:03:23

回答

2

最重要的是首先得到正確工作的查詢。任何查詢。

如果要重複使用許多次,請將其發佈到此處,工程師將就如何改進它以及如何衡量其性能發表意見。

許多因素在起作用:架構,軟件版本,服務器分佈,投入數量,產出數量等

+0

所以它通常是一個個案的基礎,並沒有任何一般的經驗法則?我處於事物的商業方面,所以我對所有後臺系統的瞭解有限。 – regularGuy 2014-11-20 21:35:27

+1

@ user3365779我會建議它的*非常*的情況下。如果沒有關於您的實施的具體信息,那麼很多變量就會成爲難題。 – paqogomez 2014-11-20 21:37:22

+0

好的。那麼它看起來像我將不得不一起拉一些額外的信息和轉發。感謝您的洞察! – regularGuy 2014-11-20 21:39:33

1

這一決定是逐案。 WITH子句對於1)在外部查詢中多次重複子查詢以及2)從外部查詢中拉出複雜的內部查詢以保持事物清潔和可讀性是有用的。 WITH可以很容易地被VIEW取代。將其視爲內聯視圖。

我認爲臨時表更專業。臨時表通常用於緩存,當需要在會話期間保留結果集以供多個查詢使用時。還有其他一些用例,但是更多的是針對這種情況。

這兩個概念只是「種」有關。

根據您的情況,WITH或臨時表都不適合。