쿼리 속도를 높이고 싶지만 이전 쿼리에서 느린 기능을 사용하여 과거 쿼리가 어떻게 바뀌 었는지 확인할 수 없습니다. 이는 쿼리의 속도를 높여 주지만 전체 쿼리를 함께 사용하면 더 빠릅니다. 문제는 각 하위 쿼리에 대해 내 주 테이블을 호출해야한다는 것입니다. 아래의 10 개 항목은 전체 내용이 약간 문제이므로 쿼리의 일부입니다. 문제의 원인을 알려줘야합니다.메인 테이블 호출로 인해 천천히 실행되는 SQL 쿼리
고맙습니다.
토마스
새로운 코드 -
SELECT DISTINCT CAST(FLOOR(CAST(DATEADD(dd, - DATEPART(dd, msValidFrom) + 1, msValidFrom) AS FLOAT)) AS DATETIME) AS MemMonth,
(SELECT COUNT(DISTINCT me_csID) AS Expr1
FROM dbo.tblMembershipStatus
WHERE (ms_memID IN (@memID))
AND (msDurationType IN (@memType))
AND (CAST(FLOOR(CAST(DATEADD(dd, - DATEPART(dd, MainMonth.msValidFrom) + 1, MainMonth.msValidFrom) AS FLOAT)) AS DATETIME))
BETWEEN CAST(FLOOR(CAST(DATEADD(dd, - DATEPART(dd, msValidFrom) + 1, msValidFrom) AS FLOAT)) AS DATETIME)
AND CAST(FLOOR(CAST(DATEADD(dd, - DATEPART(dd, msValidUntil) + 1, msValidUntil) AS FLOAT)) AS DATETIME)) AS active
FROM tblMembershipStatus AS MainMonth
WHERE (CAST(FLOOR(CAST(DATEADD(dd, - DATEPART(dd, msValidFrom) + 1, msValidFrom) AS FLOAT)) AS DATETIME) BETWEEN @StartDate AND @EndDate)
GROUP BY msValidFrom
ORDER BY MemMonth
같은 코드를하지만보기 어떻게했는지 -이 단지 부분적인 해답이 여기에 할 일이 많이
SELECT Purple7Master.dbo.fnc_GetMonthStart(msValidFrom) AS [MemMonth],
(SELECT COUNT(DISTINCT me_csID) AS Expr1
FROM dbo.tblMembershipStatus
WHERE (ms_memID IN (@memID))
AND (msDurationType IN (@memType))
AND (Purple7Master.dbo.fnc_GetMonthStart(MainMonth.msValidFrom)
BETWEEN Purple7Master.dbo.fnc_GetMonthStart(msValidFrom)
AND Purple7Master.dbo.fnc_GetMonthStart(msValidUntil))) AS [active]
FROM tblMembershipStatus AS MainMonth
WHERE (Purple7Master.dbo.fnc_GetMonthStart(msValidFrom) BETWEEN @StartDate AND @EndDate)
GROUP BY Purple7Master.dbo.fnc_GetMonthStart(msValidFrom)
ORDER BY MemMonth
실행 계획은 어디에 있습니까? – Kermit