2013-11-27 32 views
0

上在選擇行使用多種功能,我已經有了一個時間表表一個id,和總小時。在SQL Server

我現在有一個

select ts.totalhours, fn_NormalTime(ts.id), fn_Overtime(ts.id) from tsentries ts 

我已經這樣做了改進原來的查詢可讀性以及與問候節假日,星期天時間等 但是集中邏輯,依次對每個功能現在這樣一個select從表中獲得,如日期,規則等項目 有沒有辦法讓SQL不重做檢索每一個功能或將內部高速緩存足夠?希望提高速度。

+0

你好Alala歡迎來到Stackoverflow你可以提供一個例子與視圖 –

+1

我想我們需要看到你的函數來建議,但一般來說 - 你可能能夠將函數結合到表值函數,然後加入到那裏,而不是調用每行的函數。由於SQL適用於組數據,你也許能夠處理這一切,然後可能會形成一個視圖或簡化的外觀了類似的基礎查詢。 –

回答

0

用在查詢的SELECT部分​​功能會導致不好的表演,因爲函數內部的SELECT將需要爲每個你從你的查詢返回行執行。這種方式無法緩存這個結果。如果您在同一個查詢中寫入所有數據檢索邏輯,查詢優化器只會做得很好。