Sql-Server
使用 sqlcmd 時的查詢性能
可能重複:
我有許多腳本可以查詢來自不同表的數據並因此更新它們。我已經定義了一個批處理文件並在 sqlcmd 命令中執行它們。似乎當我直接在 SQL 管理工作室中執行這些腳本時,它們的執行速度比從批處理文件中呼叫它們時要快。
這種行為有什麼原因嗎?
提前致謝。
下面是我為加快使用 SQLCMD 執行腳本所做的工作,這是閱讀 AmmaR 推薦給我的好文章的結果:
對於每個腳本,我都添加了
OPTION (RECOMPILE)
,因此 SQL 不需要有查詢計劃,它每次都在編譯和執行腳本。當我們在腳本中使用變數時,這一點尤其重要。SQL 直到執行時才知道這些變數。例如,在下面的程式碼中,randomId 是根據 RAND() 函式的返回值計算得出的,因此 SQL Server 事先不知道它是什麼。添加OPTION (RECOMPILE)
有助於更快地執行此腳本,即使我使用 SQLCMD 執行它也是如此。`
SET @i = 1 WHILE @i <= @Address_Row_Count BEGIN SELECT @RandomId = ROUND(((@Upper_Town - @Lower -1) * RAND() + @Lower), 0) UPDATE a SET a.TownOrCity = ( SELECT Town FROM @TownTble aa WHERE aa.Id = @RandomId ) FROM Addresses a WHERE a.Id = @i AND a.PersonId IS NOT NULL OPTION (RECOMPILE) SET @i = @i + 1 END `
謝謝你的幫助!