Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 由于Microsoft SQL Server 2012语句中的IP地址,查询速度较慢_Sql Server_Sql Server 2008 R2_Sql Server 2012 - Fatal编程技术网

Sql server 由于Microsoft SQL Server 2012语句中的IP地址,查询速度较慢

Sql server 由于Microsoft SQL Server 2012语句中的IP地址,查询速度较慢,sql-server,sql-server-2008-r2,sql-server-2012,Sql Server,Sql Server 2008 R2,Sql Server 2012,SQL server的查询速度较慢 我们有一些软件在查询中使用SQL Server侦听器的虚拟主机名,这会导致查询性能降低 UPDATE table SET status = 1 FROM [HOSTNAMEOFSQLLISTENER].database.dbo.things AS things WHERE bar = foo 看看执行计划,它把所有的时间都花在了“远程扫描”阶段,我不知道为什么会这样 奇怪的是,当运行下面的查询时,将侦听器的IP地址替换为侦听器指向的SQL s

SQL server的查询速度较慢

我们有一些软件在查询中使用SQL Server侦听器的虚拟主机名,这会导致查询性能降低

UPDATE table SET
       status = 1
FROM  [HOSTNAMEOFSQLLISTENER].database.dbo.things AS things
WHERE bar = foo
看看执行计划,它把所有的时间都花在了“远程扫描”阶段,我不知道为什么会这样

奇怪的是,当运行下面的查询时,将侦听器的IP地址替换为侦听器指向的SQL server的IP地址(如果您通过management studio通过侦听器连接到SQL server,我已确保它是您最终使用的同一台服务器),执行计划是合理的(使用索引)查询只需一小部分时间即可完成

UPDATE table SET
       status = 1
FROM  [HOSTNAMEOFSQLSERVERDIRECTLY].database.dbo.things AS things
WHERE bar = foo
显然,这种行为在SQLServer2008中不是问题,但我还没有得到证实

所以我有两个问题:

1) 为什么执行计划不同

2) 在这些场景中,是否将侦听器的IP地址作为最佳实践

干杯


Alan

问题归结为无法读取链接服务器上的表统计信息,因此查询优化器不知道从哪里开始

如果您没有真正地来回传递数据,那么首先要尝试将更新封装在存储的进程中