다음을 통해 공유


직접 실행

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

직접 실행은 문을 실행하는 가장 기본적인 방법입니다. 애플리케이션은 Transact-SQL 문이 포함된 문자열을 빌드하고 SQLExecDirect 함수를 사용하여 실행을 위해 제출합니다. 문이 서버에 도달하면 SQL Server는 실행 계획으로 컴파일한 다음 실행 계획을 즉시 실행합니다.

직접 실행은 런타임에 문을 빌드하고 실행하는 애플리케이션에서 일반적으로 사용되며 한 번 실행되는 문에 가장 효율적인 방법입니다. 많은 데이터베이스의 단점은 SQL 문이 실행될 때마다 구문 분석 및 컴파일되어야 하므로 문이 여러 번 실행되는 경우 오버헤드가 추가된다는 것입니다.

SQL Server는 다중 사용자 환경에서 일반적으로 실행되는 문의 직접 실행 성능을 크게 향상시키고, 일반적으로 실행되는 SQL 문에 대한 매개 변수 표식이 있는 SQLExecDirect를 사용하면 준비된 실행의 효율성에 근접할 수 있습니다.

SQL Server 인스턴스에 연결된 경우 SQL Server Native Client ODBC 드라이버는 sp_executesql 사용하여 SQLExecDirect에 지정된 SQL 문 또는 일괄 처리를 전송합니다. SQL Server에는 sp_executesql 사용하여 실행된 SQL 문 또는 일괄 처리가 메모리에 이미 있는 실행 계획을 생성한 문 또는 일괄 처리와 일치하는지 신속하게 확인하는 논리가 있습니다. 일치하는 항목이 있으면 SQL Server는 새 계획을 컴파일하는 대신 기존 계획을 다시 사용합니다. 즉, 많은 사용자가 있는 시스템에서 SQLExecDirect사용하여 일반적으로 실행되는 SQL 문은 이전 버전의 SQL Server의 저장 프로시저에서만 사용할 수 있었던 많은 계획 재사용 혜택을 누릴 수 있습니다.

실행 계획을 다시 사용하는 데 따른 이러한 이점은 여러 사용자가 동일한 SQL 문 또는 일괄 처리를 실행하는 경우에만 얻을 수 있습니다. 다음 코딩 규칙을 따라 다른 클라이언트에서 실행하는 SQL 문이 실행 계획을 다시 사용할 수 있을 만큼 유사할 확률을 높입니다.

  • SQL 문에 데이터 상수는 포함하지 마세요. 대신 프로그램 변수에 바인딩된 매개 변수 표식을 사용합니다. 자세한 내용은 문 매개 변수 사용을 참조 하세요.

  • 정규화된 개체 이름을 사용합니다. 개체 이름이 정규화되지 않은 경우 실행 계획은 다시 사용되지 않습니다.

  • 애플리케이션 연결에 공통 연결 및 문 옵션을 사용할 수 있도록 합니다. 한 옵션 집합(예: ANSI_NULLS)이 있는 연결에 대해 생성된 실행 계획은 다른 옵션 집합이 있는 연결에 다시 사용되지 않습니다. SQL Server Native Client ODBC 드라이버와 SQL Server Native Client OLE DB 공급자는 모두 이러한 옵션에 대해 동일한 기본 설정을 가집니다.

SQLExecDirect실행된 모든 문이 이러한 규칙을 사용하여 코딩된 경우 기회가 발생할 때 SQL Server에서 실행 계획을 다시 사용할 수 있습니다.

참고 항목

문 실행(ODBC)