2011-08-22 262 views
3

我在循環中測試查詢性能。我不想返回結果集的重複數百個,我想運行一個select語句幾百次,每次都丟棄結果。TSQL等效於PostgreSQL「PERFORM」關鍵字?

PostgreSQL的語法爲「執行select ...」,它將執行select語句並放棄結果。 「37.6.2。執行沒有結果的查詢」http://www.postgresql.org/docs/8.2/static/plpgsql-statements.html

TSQL中是否存在等價關鍵字?

我知道SSMS有一個「放棄結果」選項,但是看起來結果在每次迭代後都不會丟棄,並且在所有迭代完成之前仍會在內存中累積。我猜想選擇一個臨時變量可能會起作用,但只要丟棄關鍵字的結果就簡單多了。我寧願避免構建表變量定義以及將結果存儲在臨時表中的潛在開銷。

回答

0

我通過SQL-92規範搜索了一個等效的關鍵字,但是我找不到任何並且根據我的經驗不知道SQL Server的特定關鍵字。

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(); 
    } 
} 
+0

我使用TSQL而不是ADO.Net運行它。這個問題不是無視結果集的問題,據我所知,這是所有的ExecuteNonQuery完成的。問題是爲了確保當每個SELECT語句完成時SQL Server會放棄結果集,當在單個TSQL批處理循環中發出數千個選擇語句時,它可以有效地測試語句的性能,而不會浪費可能的資源干擾測試。 – Triynko