TSQL中等效于PostgreSQL "PERFORM"关键字的是什么?

3

我正在循环测试查询性能。不想返回一百个结果集的重复数据,我希望运行一条select语句并且重复执行数百次,每次都舍弃结果。

PostgreSQL有"perform select..."这样的语法,它将执行select语句并且抛弃结果。"37.6.2. 执行无结果查询" http://www.postgresql.org/docs/8.2/static/plpgsql-statements.html

TSQL中是否有等效的关键字?

我知道SSMS有一个"Discard results"选项,但似乎结果并没有在每次迭代后被舍弃,而是会一直积累在内存中,直到所有迭代完成。我想选择一个临时变量可以起作用,但更简单的方式是使用一个关键字来舍弃结果。我宁愿避免构建表变量定义和在临时表中存储结果的潜在开销。

2个回答

0
如果您正在使用ADO.Net,可以通过使用command.ExecuteNonQuery()来执行没有结果集的查询;
using System;
using System.Data;
using System.Data.SqlClient;

class Program
{
    static void Main(string[] args)
    {
        string sqlConnectString = "Data Source=(local);Integrated security=SSPI;Initial Catalog=MyDatabase;";

        string sqlDelete = "DELETE FROM MyTable WHERE Id = 2";

        SqlConnection connection = new SqlConnection(sqlConnectString);
        SqlCommand command = new SqlCommand(sqlDelete, connection);
        connection.Open( );
        int rowsAffected = command.ExecuteNonQuery( );
        Console.WriteLine("{0} row(s) affected.", rowsAffected);
        Console.WriteLine("Record with Id = 2 deleted.");
        connection.Close( );
    }
}

我正在使用TSQL而不是ADO.Net运行它。问题不在于忽略结果集,据我所知,ExecuteNonQuery只能完成这一点。问题在于确保SQL Server在每个SELECT语句完成后立即丢弃结果集,当成千上万个SELECT语句在单个TSQL批处理中循环发出时,它可以有效地测试语句的性能,而不浪费可能干扰测试的资源。 - Triynko

0

我在 SQL-92 规范中搜索了等效的关键字,但未能找到任何一个,并且根据我的经验,也不知道 SQL Server 中是否有特定的关键字。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接