DB/MSSQL
[MSSQL] 쿼리로 성능 체크. 스칼라 or 프로시저
Nuu
2025. 4. 7. 10:14
쿼리를 100번 돌려서 걸리는 시간 계산하기
DECLARE @i INT = 0;
DECLARE @elapsed1 INT = 0;
DECLARE @elapsed2 INT = 0;
DECLARE @tempStart DATETIME;
DECLARE @result1 INT;
DECLARE @result2 INT;
-- 프로시저 결과 저장용 테이블
DECLARE @temp TABLE (
[프로시저 결과 스키마]
);
WHILE @i < 100 -- 100번 돌림, 반복 많을수록 오차 감소
BEGIN
-- [비교 1]
SET @tempStart = GETDATE();
-- 스칼라
SELECT @result1 = [스칼라];
-- 프로시저
-- 프로시저 결과를 임시 테이블에 저장
DELETE FROM @temp;
INSERT INTO @temp
EXEC [프로시저];
-- 결과 가져오기
SELECT TOP 1 @result1 = PRICE FROM @temp;
SET @elapsed1 += DATEDIFF(MILLISECOND, @tempStart, GETDATE());
-- [비교 2]
SET @tempStart = GETDATE();
-- 스칼라
SELECT @result2 = [스칼라];
-- 프로시저
DELETE FROM @temp;
INSERT INTO @temp
EXEC [프로시저];
-- 결과 가져오기
SELECT TOP 1 @result2 = PRICE FROM @temp;
SET @elapsed2 += DATEDIFF(MILLISECOND, @tempStart, GETDATE());
SET @i += 1;
END
-- 최종 결과 출력
SELECT
@result1 AS 결과Q1,
@result2 AS 결과Q2,
@elapsed1 / 100.0 AS 평균Q1ms,
@elapsed2 / 100.0 AS 평균Q2ms,
(@elapsed1 - @elapsed2) AS Time_Diff_Total_ms,
(@elapsed1 - @elapsed2) / 10.0 AS Avg_Time_Diff_Per_Run_ms;