3

루프에서 쿼리 성능을 테스트하고 있습니다. 결과 집합을 백 개의 복사본으로 반환하는 대신 select 문을 수백 번 실행하여 매번 결과를 삭제합니다.PostgreSQL "PERFORM"키워드에 해당하는 TSQL?

PostgreSQL은 "select select ..."구문을 사용하여 select 문을 실행하고 결과를 무시합니다. "37.6.2 결과가없는 쿼리 실행"http://www.postgresql.org/docs/8.2/static/plpgsql-statements.html

TSQL에 동일한 키워드가 있습니까?

SSMS에 "Discard results"옵션이 있지만 각 반복 후에 결과가 삭제되지 않고 모든 반복이 완료 될 때까지 메모리에 누적되는 것으로 나타납니다. 임시 변수를 선택하는 것이 효과적 일지 모르지만 키워드로 결과를 삭제하는 것이 훨씬 간단합니다. 오히려 테이블 변수 정의의 생성과 결과를 임시 테이블에 저장하는 잠재적 인 오버 헤드를 피할 것입니다.

답변

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

저는 ADO가 아닌 TSQL에서 실행하고 있습니다. 이 문제는 결과 집합을 무시할 문제가 아닙니다. ExecuteNonQuery가 아는 한 모두 수행합니다. 문제는 SQL Server가 단일 SELECT 문이 끝나자 마자 결과 집합을 무시한다는 것입니다. 수천 개의 SELECT 문이 단일 TSQL 일괄 처리의 루프에서 실행되므로 효과적으로 낭비하지 않고 문 성능을 테스트 할 수 있습니다. 시험에 방해가된다. – Triynko