Sky*_*Sky 6 sql-server-2008 sql-server optimization t-sql sqlcmd
可能的重复:
使用 SQLCMD 运行查询与使用 SSMS 运行查询
我有许多脚本可以从不同的表中查询数据并因此更新它们。我已经定义了一个批处理文件并在 sqlcmd 命令中运行它们。似乎当我直接在 SQL management studio 中运行这些脚本时,它们的运行速度比从批处理文件中调用它们时运行得更快。
这种行为有什么原因吗?
提前致谢。
以下是我阅读 AmmaR 推荐给我的好文章后,为使用 SQLCMD 加速运行脚本所做的事情:
对于每个脚本,我都添加了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 `
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助!
归档时间: |
|
查看次数: |
1791 次 |
最近记录: |