SQLServer 2005 удалить запрос с присоединитьсяSQLServer 2005 удалить запрос с присоединиться
Я следующий запрос с удаляет запись, есть некоторые вещи в этом запросе мы можем оптимизировать? используется способ удаления записи с соединением? любое удаление служебных данных с помощью записей соединения?
DELETE BATCH_SCORE
FROM BATCH_SCORE BS JOIN INQUIRY_MATCH IM ON BS.BATCH_ID = IM.BATCH_ID AND IM.INQUIRY_MATCH_ID = #inquiryMatchId#
WHERE NOT EXISTS (SELECT TOP 1 1 FROM INQUIRY_MATCH WHERE BATCH_ID = BS.BATCH_ID AND CURRENT_STATE IN ('OPN','RVW',
'ASN', 'ESC', 'PND')) AND BS.PERMANENT_BATCH = 'N'
я написал новый запрос следующим образом, новый запрос лучше, чем выше один
DELETE
BATCH_SCORE
FROM
BATCH_SCORE BS
WHERE
NOT EXISTS (
SELECT
TOP 1 1
FROM
INQUIRY_MATCH
WHERE
INQUIRY_MATCH_ID = 1011 AND
BATCH_ID = BS.BATCH_ID AND
CURRENT_STATE IN ('OPN',
'RVW',
'ASN',
'ESC',
'PND')) AND
BS.PERMANENT_BATCH = 'N'
В столбце CURRENT_STATE уже есть индекс –
На всякий случай, если вы не поймали мой смысл, важными важными индексами являются те, что указаны в BATCH_ID (в обеих таблицах) и INQUIRY_MATCH_ID. Индекс на CURRENT_STATE * может * помочь, но не так сильно, как другие. –
спасибо, что Адам получил вашу мысль. –