0
我们有一系列旨在使用OPENQUERY和数据库链接服务器将数据从一个SQL Server数据库移动到另一个SQL Server数据库的程序。SQL Server DELETE OPENQUERY性能
我们注意到,诸如以下的查询的订单数量远超预期。
DELETE OPENQUERY(server, 'SELECT * FROM table WHERE pkf1 = ''v1'' AND pkf2 = ''v2''')
例如,如果上述被改写为:
exec('DELETE * FROM table WHERE pkf1 = ''v1'' and pkf2 = ''v2''') at server
或
DELETE FROM server.schema.table WHERE pkf1 = 'v1' and pkf2 = 'v2'
相比于使用OPENQUERY
分钟性能是只用几秒钟。
有人可以解释为什么OPENQUERY
方法是比较低效率吗?它不使用主键索引吗?
内解决,你可以看看这里https://support.microsoft.com/en-us/kb/309182 – jthalliens
“订单数量远超预期”。你的期望被误导了。我想缓慢的查询在删除前本地传输记录,而快速的查询则不会。 OPENQUERY在本地返回一个结果集,其他方法不会。尽管我不熟悉'at server'语法。有趣。当然,这告诉你操作发生在服务器而不是客户端。 –