아래의 SQL 쿼리가 있습니다.SQL 쿼리 하나의 테이블 만 - 너무 많은 시간이 걸립니다.
declare @RoleID int
SELECT @RoleID = RoleID FROM RoleMaster WHERE RoleEnglishDesc = 'Surveyor'
SELECT * FROM (
SELECT
S.ShiftID, 2 AS Flag, ISNULL(U.Latitude, 0) Latitude, ISNULL(U.Longitude, 0) Longitude,
U.EmployeeEnglishName AS ToolTipEnglish, U.EmployeeArabicName AS ToolTipArabic,
0 AS CaseStageID, COUNT(C.SurveyorAssigned) AS Assigned
-- L.EntryTime AS LastEntryTime
-- S1.cnt AS OnBreak
FROM
Users U
INNER JOIN dbo.SurveyorShift S ON S.UserId = U.UserID AND S.ShiftStatus = 1
LEFT JOIN CaseInfoCommandQueue C ON C.SurveyorAssigned = U.UserID
WHERE U.IsActive = 1
AND NULLIF(NULLIF(U.Latitude, '0'), '') IS NOT NULL
AND NULLIF(NULLIF(U.Longitude, '0'), '') IS NOT NULL
AND ((U.RoleID = @RoleID) OR (U.RoleID2 = @RoleID) OR (U.RoleID3 = @RoleID))
GROUP BY U.UserID, RoleID, Latitude, Longitude, EmployeeEnglishName, EmployeeArabicName, ShiftID
) D
OUTER APPLY
(
SELECT TOP 1 EntryTime FROM DeviceUserLocation DLoc
WHERE DLoc.ShiftID = D.ShiftID ORDER BY DLoc.EntryTime DESC
) AS L
마지막으로 바깥쪽에있는 문제는 입력 시간을 가져 오는 데에만 적용됩니다. 그 외부 적용은 단지 10 초 걸리기 때문에. 그 테이블 DeviceUserLocation은 또한 lacs 항목을 가지고 있습니다. 다른 방법으로 상위 1 위를 사용하거나 극복하는 단계는 무엇입니까?
테이블 기본 키와 외래 키를 인덱스로 만듭니다 .It 쿼리 결과를 빨리 처리 할 것입니다. – Rahul