我们有一系列程序,旨在使用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
方法相比效率低下吗?它不使用主键索引吗?
答案 0 :(得分:0)
打开查询比简单查询(如DELETE)有更好的处理程序,查询在远程服务器中解析