我运行一个存储过程从两个表中删除数据:加快具有删除加入
delete from TESTING_testresults
from TESTING_testresults
inner join TESTING_QuickLabDump
on TESTING_QuickLabDump.quicklabdumpid = TESTING_TestResults.quicklabdumpid
where TESTING_quicklabdump.[Specimen ID][email protected]
delete from TESTING_QuickLabDump
from TESTING_Quicklabdump
where [specimen id][email protected]
一个表为60μm行,另一种是2m左右行
过程大约需要3运行几秒钟。
有没有什么办法可以加快速度?也许使用EXISTS
?
意味着IF EXISTS...THEN DELETE
- 因为删除不应该发生的每一次
像这样
如果@specimen exists
在TESTING_QuickLabDump
然后执行程序与两个删除
谢谢!
是否确定,如果它是查询(找到要删除的行),或花费最多时间的实际行删除? – Magnus 2012-02-02 22:45:04
如果建立索引或其他调整工作无效,并且这构成了一个实际问题,您可能需要查看表分区,这将允许您在没有开销的情况下执行删除操作。 – 2012-02-03 00:10:50
也许我正在阅读这里的内容,但是您是否试图逐行删除数据?如果是这样,请尝试一种基于集合的方法。也就是说,创建一个临时表,保存所有SpeciminID以删除并加入它。 – 2012-02-03 01:07:48