我有一些搜索功能(存儲過程),需要返回結果完全相同的列。您應該使用臨時表在存儲過程之間傳遞數據嗎?
這是已採取的方法:
每個存儲過程具有以下一般結構:
CREATE TABLE #searchTmp (CustomerID uniqueIdentifier)
INSERT INTO #searchTmp
SELECT C.CustomerID FROM /**** do actual search here, based
on stored proc arguments ****/
EXEC spSearchResults
DROP TABLE #searchTmp
在上文中,spSearchResults使用#searchTmp表中選擇。 spSearchResults總是會返回一個具有相同列的表,並且有很多連接。
但是,而不是使用臨時表,是下面的方法更易於接受。
SELECT col1, col2, col3, col4, .... etc, lots of columns ... FROM table1 LEFT JOIN table 2 ON ... etc, lots of joins ... WHERE ... DO ACTUAL SEARCH HERE ...
如果有10次不同的搜索做的(如搜索客戶基於郵政編碼,一個搜索基於姓氏等),這第二種方法意味着有大量的指定列和連接的重複。如果使用搜索功能的代碼發生變化,需要返回一個新列,那麼需要更新10個存儲過程。
我都贊成第一種方法,但我只是想知道第二種方法有什麼好處。性能?
還是有第三種方法?