表中数据删除很慢,有几个外键,怎么办?
这个表中有6个关联别的表的外键,和2个被别的表管理的外键。
这个表的数据量有一百多万条记录。
被关联的两个表的数据量大概有三百多万条记录。
其余表都很小,现在要删除300多条记录,超级慢,要十几分钟。
删除语句如下
Delete From [T_FeeItem]
Where PID In(Select PID From T_PID Where OrgTask = 2346 And Status = 0)
其中T_PID 表的数据有几十万条记录
即使我使用这样的删除语句,也同样速度较慢。
Delete From [T_FeeItem]
Where PID = 100000
------解决方案--------------------你有用级联删除吗?
------解决方案--------------------查看一下执行计划..看哪个环节的成本较高.
------解决方案--------------------禁用外键 然后删除 然后在启用外键
------解决方案--------------------首先很明显,你17,18楼给出的计划跟1楼的语句是不对应的。
根据你的计划,建如下索引,试一下。
CREATE NONCLUSTERED INDEX [NonClusteredIndex-20130510-194817] ON [dbo].[T_inspect_patientExamItem]
([patientFeeItem] ASC)
CREATE NONCLUSTERED INDEX [NonClusteredIndex-20130510-194818] ON [dbo].[T_inspect_patientFeeItem]
([patient] ASC)
CREATE NONCLUSTERED INDEX [NonClusteredIndex-20130510-195639] ON [dbo].[T_inspect_patient]
( [inspectOrgTask] ASC,
[patient] ASC
)