繁体   English   中英

性能优化-MS SQL Delete查询,NOT IN无效

[英]Performance optimisation for - MS SQL Delete query with NOT IN caluse

我有以下SQL查询,并且需要很长时间才能完成。 我想检查是否可以使用其他查询来获得相同的结果,但同时也可以提高性能。

Delete from table1 WHERE fk_id = '1234' AND pk_id NOT IN ('aaaa', 'bbbb', 'cccc');

注意: pk_idPK列, fk_idtable1的FK。

我对查询没有任何建议,这很基本。

但您可能想尝试添加索引:

ALTER TABLE table1 ADD INDEX (fk_id);

使用您提供的数据,因为您使用了“ AND”条件,所以查询似乎没有问题。 现在,您需要考虑和分析数据库,为什么您的查询要花费这么多时间。 因此,您可能需要检查以下内容。

1)选择计数(1)
来自表1
其中fk_id ='1234'和pk_id NOT IN('aaaa','bbbb','cccc')
这将为您提供要删除的行数。

2)尝试类似
选择
T.name AS表名,O.name触发器名
从sysobjects O
内部联接系统表T ON T.object_id = O.parent_obj
O.type ='TR'和T.name ='table1'

这将告诉您与表关联的触发器。

3)您需要进一步研究索引的表属性,以及那里存在的任何约束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM