結合を伴う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'