0

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

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

注意:pk_idPK列并且fk_idtable1.

4

2 回答 2

0

我对查询没有任何建议,它非常基本。

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

ALTER TABLE table1 ADD INDEX (fk_id);
于 2012-07-20T18:12:46.070 回答
0

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

1) select count(1)
from table1
where fk_id = '1234' AND pk_id NOT IN ('aaaa', 'bbbb', 'cccc')
这将为您提供要删除的行数。

2)尝试类似
SELECT
T.name AS TableName ,O.name TriggerName
FROM sysobjects O
INNER JOIN sys.tables T ON T.object_id = O.parent_obj
WHERE O.type = 'TR' AND T.name = 'table1'

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

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

于 2012-07-21T00:47:48.313 回答