Фон
У меня есть две таблицы - одна обновляется каждый день новыми данными (несобственный крайний срок), а одна постоянно добавляется и удаляется из зависимости от другой (оперативная таблица).
Способ, которым это работает, заключается в том, что, если распределенные рабочие места появляются в таблице «неисполненных сроков», то добавьте в таблицу «вживую». Если на следующий день занятых лиц нет в таблице «неисполненных сроков», удалите из таблицы «вживую».
Две самые большие проблемы здесь заключаются в том, что, хотя идентификационный номер работы является легкой проверкой, он также должен проверить, не распределена ли работа по одному и тому же сотруднику, чтобы, если она переходит к другому сотруднику, она не считать против них.
Проблема, с которой я сталкиваюсь, заключается в том, что часть кода удаления, кажется, выполняется более 3000 строк и возвращает около 300 просто отлично, но выполнение этого оператора SQL занимает более 4 минут и 30 секунд. Каков наиболее эффективный способ написания этого заявления? Мой инстинкт инстинкта говорит мне, что эти два утверждения различны, и объединение их является проблемой.
DELETE FROM [LiveTable]
WHERE [WorkID] NOT IN (SELECT [WorkID]
FROM [FailedDeadline])
OR [LiveTable].[EmployeeID] <> (SELECT [EmployeeID]
FROM [FailedDeadline] as fd
WHERE [LiveTable].[WorkID] = fd.[WorkID]);