앞서 Stored Proceduer와 SQL을 연속적으로 실행할 때,
캐시된 데이터를 활용해 성능을 개선할 수 있음을 확인했습니다
둘다 비슷하게 동작하기 때문에 성능상 큰 차이가 없다고 생각할 수 있지만
특정 상황에서는 Stored Procedure가 더 큰 장점을 가집니다
SELECT * FROM EMP_TABLE WHERE NAME = '황제연'
SELECT * FROM EMP_TABLE WHERE NAME = '황재연'
SELECT * FROM EMP_TABLE WHERE NAME = '황제현'
위 쿼리는 구조가 동일하지만 조건의 문자열 값이 다릅니다.
따라서 데이터베이스는 전혀 다른 쿼리로 인식됩니다
따라서 각각의 쿼리가 별도의 최적화와 컴파일 과정을 가지므로,
캐시된 데이터의 이점을 활용할 수 없습니다
반면에, Stored Procedure는 매개변수를 이용해 쿼리를 한번 정의하고 재사용하기 때문에
처음 실행 시에만 최적화 및 컴파일이 이루어지고,
이후에는 캐시에 저장된 실행 계획을 그대로 활용할 수 있습니다
CREATE OR ALTER PROCEDURE SP_EMP_NAME_SELECT
@EMP_NAME NVARCHAR(100)
AS
SELECT * FROM EMP_TABLE WHERE EMP_NAME = @EMP_NAME;
EXEC SP_EMP_NAME_SELECT '황제연';
EXEC SP_EMP_NAME_SELECT '황재연';
EXEC SP_EMP_NAME_SELECT '황제현';
따라서 자주 실행하는 SQL문의 경우, SQL을 직접 실행하는 것보다
Stored Procedure를 사용하는 것이 성능상 이점을 얻을 수 있습니다