SQL Server DELETE OPENQUERY性能

时间:2016-03-28 19:59:29

标签: sql-server database-performance openquery

我们有一系列程序,旨在使用OPENQUERY和数据库链接服务器将数据从一个SQL Server数据库移动到另一个SQL Server数据库。

我们注意到以下查询的订单数量超出预期。

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方法相比效率低下吗?它不使用主键索引吗?

1 个答案:

答案 0 :(得分:0)

打开查询比简单查询(如DELETE)有更好的处理程序,查询在远程服务器中解析