직접 실행
직접 실행은 가장 기본적인 문 실행 방법입니다. 응용 프로그램에서는 Transact-SQL 문이 포함된 문자열을 작성하고 SQLExecDirect 함수를 사용하여 실행하도록 전송합니다. 서버에서 문이 수신되면 SQL Server가 문을 실행 계획으로 컴파일한 다음 실행 계획을 즉시 실행합니다.
직접 실행은 런타임에 문을 작성하고 실행하는 응용 프로그램에 많이 사용되며, 한 번 실행되는 문에 가장 효율적인 실행 방법입니다. 반면 실행할 때마다 SQL 문을 구문 분석하고 컴파일해야 하기 때문에 문을 여러 번 실행하는 경우 오버헤드가 증가한다는 점이 많은 데이터베이스에서 단점이 됩니다.
SQL Server 7.0 이전 버전에 연결되어 있으면 다음과 같은 경우에 직접 실행을 사용해야 합니다.
문이 4번 미만으로 실행될 가능성이 큰 경우
저장 프로시저를 호출할 경우
SQL Server 2000 이상에서는 다중 사용자 환경에서 자주 실행되는 문의 직접 실행 성능이 크게 향상되었으며, 자주 실행되는 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에서 기회가 있을 때 실행 계획을 다시 사용할 수 있습니다.