3

ループでクエリのパフォーマンスをテストしています。結果セットの100の複製を返すのではなく、selectステートメントを何百回も実行して、毎回結果を破棄したいと思います。

PostgreSQLの構文は「performselect...」で、selectステートメントを実行して結果を破棄します。「37.6.2。結果なしでクエリを実行する」http://www.postgresql.org/docs/8.2/static/plpgsql-statements.html

TSQLに同等のキーワードはありますか?

SSMSには[結果を破棄]オプションがあることは知っていますが、結果は各反復後に破棄されず、すべての反復が完了するまでメモリに蓄積されるようです。一時変数への選択は機能すると思いますが、キーワードを使用して結果を破棄する方がはるかに簡単です。テーブル変数定義の作成と、結果を一時テーブルに格納することによる潜在的なオーバーヘッドは避けたいと思います。

4

2 に答える 2

0

SQL-92仕様で同等のキーワードを検索しましたが、何も見つかりませんでした。私の経験では、SQLServerに固有のキーワードはわかりません。

于 2011-08-22T18:42:59.813 に答える
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( );
    }
}
于 2011-08-22T21:45:20.353 に答える