Я пытаюсь обнаружить несколько неработающих записей в базе данных MS-SQL.
В упрощенном примере сценарий таков:
У меня есть 2 таблицы, проще говоря:
Таблица_1: идентификатор, дата, идентификатор операции
Таблица_2: дата, идентификатор операции, имя события
И у меня есть это бизнес-правило: если в Таблице_1 есть запись, ТОГДА в Таблице_2 должна быть хотя бы одна строка для Таблицы_1. Дата и Таблица.OpId.
Если в Таблице_1 есть строка и если в Таблице_2 нет строки, совпадающей с этой строкой, ТО есть поврежденные данные - независимо от причины.
Чтобы узнать неверные данные, я использую:
SELECT *
FROM table_1 t1
LEFT JOIN table_2 t2 ON t1.Date = t2.Date AND t1.OpId = t2.OpId
WHERE t2.OpId IS NULL -- So, if there is no
-- matching row in table_2 then this is a mistake
Но для завершения запроса требуется слишком много времени.
Может ли быть более быстрый или лучший способ приблизиться к подобным сценариям ?