我有以下查詢,我直接在我的代碼&中執行將其置於數據表中。問題是執行此查詢需要超過10分鐘的時間。需要時間的主要部分是NON EXISTS
。SQL查詢不存在優化
SELECT
[t0].[PayrollEmployeeId],
[t0].[InOutDate],
[t0].[InOutFlag],
[t0].[InOutTime]
FROM [dbo].[MachineLog] AS [t0]
WHERE
([t0].[CompanyId] = 1)
AND ([t0].[InOutDate] >= '2016-12-13')
AND ([t0].[InOutDate] <= '2016-12-14')
AND
( NOT (EXISTS(
SELECT NULL AS [EMPTY]
FROM [dbo].[TO_Entry] AS [t1]
WHERE
([t1].[EmployeeId] = [t0].[PayrollEmployeeId])
AND ([t1]. [CompanyId] = 1)
AND ([t0].[PayrollEmployeeId] = [t1].[EmployeeId])
AND (([t0].[InOutDate]) = [t1].[Entry_Date])
AND ([t1].[Entry_Method] = 'M')
))
)
ORDER BY
[t0].[PayrollEmployeeId], [t0].[InOutDate]
有沒有什麼辦法可以優化這個查詢?這是什麼工作。這需要太多時間。
請修復你的格式。 –
寫入存在的部分作爲連接並再次檢查性能 – ManOnAMission
您是否也請分享執行計劃?這將指導我們的性能修復事實上 – Eralper