2
큰 쿼리 인 경우 두 번째 저장 프로 시저가 더 빠릅니까?EXEC sp_executesql과 직접 SQL 사용간에 속도 차이가 있습니까
CREATE PROCEDURE Customers_GetCustomer
@CustId CHAR(5)
AS
BEGIN
DECLARE @SQL NVARCHAR(2000)
SET @SQL = 'SELECT ContactName FROM Customers WHERE CustomerId = @CustomerId'
EXEC sp_executesql @SQL, N'@CustomerId CHAR(5)', @CustomerId = @CustId
END
수스 :이 같은 간단한 쿼리와
CREATE PROCEDURE Customers_GetCustomer
@CustId CHAR(5)
AS
BEGIN
SELECT ContactName FROM Customers WHERE CustomerId = @CustId
END
각 호출에서 동적 SQL을 구문 분석해야합니다 (실행 계획이 숨겨져 있음). 일반 SQL은 직접 컴파일 할 수 있습니다. 거래를 실행하는 경우 문제가 될 수 있습니다. 쿼리가 좀 더 복잡하다면, 컴파일을위한 추가 노력은 아마도 문제가되지 않을 것입니다. –
성능 차이는 미미하지만 실제로 유지해야하는 경우가 아니면 동적 SQL을 사용하지 마십시오. 유지 관리하기가 더 어려워지기 때문입니다. 그 결론은 정말로 중요하지 않습니다. 동적 SQL이 필요한 경우 표준 쿼리를 사용할 수 없습니다. –