哪个查询在性能SQL服务器方面会更好

时间:2016-03-18 08:22:05

标签: sql sql-server sqlperformance

我已经写了两个问题,我需要帮助才能知道哪一个在性能方面会更好。两者都做同样的事情。还请告知您是否有更好的编写查询的方法

查询1

DECLARE @TotalAvailedLateNightGeneral INT

;WITH CTE (TotalDaysAppliedFor) AS (
    SELECT SUM(TotalDaysAppliedFor) AS TotalDaysAppliedFor
    FROM [CURFEW_RLX_REQUEST] WITH (NOLOCK)
    GROUP BY StaffSeqId, RequestTypeId, MONTH(PermissionRequiredFrom), StatusId, IsActive
    HAVING StaffSeqId = 41130
        AND RequestTypeId = 3
        AND MONTH(PermissionRequiredFrom) = MONTH('2016-03-30 00:00:00.000')
        AND StatusId <> 111
        AND IsActive = 1
)
SELECT @TotalAvailedLateNightGeneral = SUM(TotalDaysAppliedFor)
FROM CTE

SELECT @TotalAvailedLateNightGeneral

QUERY 2

SELECT SUM(TotalDaysAppliedFor) AS TotalDaysAppliedFor
FROM [CURFEW_RLX_REQUEST] WITH (NOLOCK)
--GROUP BY StaffSeqId,RequestTypeId,MONTH(PermissionRequiredFrom),StatusId,IsActive
WHERE StaffSeqId = 41130
    AND RequestTypeId = 3
    AND MONTH(PermissionRequiredFrom) = MONTH('2016-03-30 00:00:00.000')
    AND StatusId <> 111
    AND IsActive = 1

1 个答案:

答案 0 :(得分:0)

DECLARE @StartDate DATETIME = '2016-03-01'
DECLARE @EndDate DATETIME = '2016-04-01'

SELECT TotalDaysAppliedFor = SUM(TotalDaysAppliedFor)
FROM dbo.QAG_GEMS_CURFEW_RLX_REQUEST
WHERE StaffSeqId = 41130
    AND RequestTypeId = 3
    AND PermissionRequiredFrom >= @StartDate
    AND PermissionRequiredFrom < @EndDate
    AND StatusId != 111
    AND IsActive = 1