我们有一系列旨在使用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方法的效率如此之低吗?它不使用主键索引吗?
发布于 2017-10-06 00:47:30
与DELETE等简单查询相比,Open查询具有更好的处理程序,而且查询在远程服务器中解析
https://stackoverflow.com/questions/36270117
复制相似问题