我只是想知道,如果在SQL Server中,如果在這樣的語句:SQL Server優化:SELECT在WHERE子句之前或之後計算?
SELECT A.Field1, dbo.someFunction(A.IdentifierID) As Field
FROM Table A WHERE A.IdentifierID = 1000
將它稱之爲someFunction爲表中的所有行,還是會調用一次?
謝謝!
我只是想知道,如果在SQL Server中,如果在這樣的語句:SQL Server優化:SELECT在WHERE子句之前或之後計算?
SELECT A.Field1, dbo.someFunction(A.IdentifierID) As Field
FROM Table A WHERE A.IdentifierID = 1000
將它稱之爲someFunction爲表中的所有行,還是會調用一次?
謝謝!
會調用它的每一行,但由於您選擇了特定的一個(或者看起來很像),它會在您的示例中調用一次。
它將被要求結果的每一行
由於vlad評論你應該試試看。當然也有兩種選擇:
,但可能不是正確的事情......
我強烈懷疑#2。
兼容的SQL服務器應該是出現就好像它們在應用SELECT子句之前應用WHERE子句一樣。所以它應該出現以評估功能最多一次滿足WHERE A.IdentifierID = 1000
每行的功能。
但是,數據庫引擎可以自由優化,只要它們符合標準要求即可。所以在你的情況下,由於你選擇了一個ID號碼,它可能只需要評估一次該功能。
調用的次數取決於所得到的行,即,如果查詢100行的輸出的它會被稱爲100次,而不是在表
都行,但如果它是在哪裏子句,它會對每一行進行評估
嘗試一下,看看哪個更快! – vlad