使用sqlcmd查询性能

Sky*_*Sky 6 sql-server-2008 sql-server optimization t-sql sqlcmd

可能的重复:
使用 SQLCMD 运行查询与使用 SSMS 运行查询

我有许多脚本可以从不同的表中查询数据并因此更新它们。我已经定义了一个批处理文件并在 sqlcmd 命令中运行它们。似乎当我直接在 SQL management studio 中运行这些脚本时,它们的运行速度比从批处理文件中调用它们时运行得更快。

这种行为有什么原因吗?

提前致谢。

Sky*_*Sky 0

以下是我阅读 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)

感谢您的帮助!