2013-07-03 98 views
0

我不知道該怎麼稱呼它,也許它鋪在這裏的某個地方,在SO ...優化SQL腳本

我在想哪一個更快,更易於維護..

說我有50個變量,其中每個變量從一個表中獲取其值如

SET @Location = SELECT location FROM params WHERE TYPE = 'Param' 

SET @Location = 'D:\OUTBOX\' 

W¯¯這是一個優化,並會在查詢執行期間提供一個提升,此外,除了使用SQL分析器+ SQL執行計劃外,還有一種方法可以分析查詢嗎?

+2

在使用小'params'表,或直接把值中的代碼之間的性能差異將會非常非常小。可維護性等問題更爲重要。我更喜歡使用參數表,所以可以在SQL中而不是在SSIS中更改這些值。 –

+0

如果它不只是一行?如果情況是因爲每個變量值都是從一行開始的呢?這基本上意味着你必須做50選擇stmt?你會建議把所有的值與50列一行嗎? –

+0

。 。 50列幾乎沒有什麼區別。參數表將被加載到內存中,可能在單個頁面上。如果你有一個'type'索引,那麼查找將會非常快速。速度不如常數,但可能對需要明顯(> 100 ms)時間量的腳本無關緊要。 –

回答

0

那麼,第二個顯然更快,因爲它不讀取任何數據,但它可以爲你工作?這顯然難以維持。第一個簡單的選擇,不應該導致任何性能問題。

如果所有的變量都在表中的同一行,你可以用一個SELECT陳述閱讀:

SELECT @Location = location, @Param2 = Column2, @Param3 = Column3 FROM params WHERE TYPE = 'Param' 
+0

如果它不僅僅是一行?如果情況是每一個變量值都是從一行開始的呢?這基本上意味着你必須做50選擇stmt?你會建議把所有的值與50列一行嗎? –