0
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 *上的索引可能会有所帮助,但不会像其他索引那样多。 –
谢谢亚当明白你的观点。 –