我在服务器上使用链接服务器做查询,结果发现一条结果2000多的sql需要20多秒
select a.ID,c.xm as 姓名,count(a.ID) as 次数,b.nl as 年龄,
case c.xb when 1 then '男' else '女' end as 性别
from REPORT as a left join tj.BS_tjxt.DBO.TJ_TJDJB as b on a.ID=b.TJBH
left join tj.BS_tjxt.DBO.TJ_TJDAB as c on b.DABH=c.DABH
where a.TYPE='11' and a.REPORT_STATE='206' group by ID,c.xm,b.nl,c.xb
开始我以为是sql语句的问题,但是我后来在本机还原了一个备份测试,(本机是xp,服务器windows server 2008 R2,sql都是sqlserver2008 R2),同样的方式建立链接服务器,但是执行一样的sql只要4秒,
exec sp_addlinkedserver 'tj','','SQLOLEDB','10.90.90.253'问题出在什么地方?
exec sp_addlinkedsrvlogin 'tj','false',null,'sa','123'
go
SQL 服务器 链接服务器
------解决方案--------------------
链接服务器本身就比在本地的要慢,另外有可能你的帐号没有足够的权限获取远程服务器上的statistics,在运行之前在远程服务器上用profiler开启exception事件,看看能不能捕捉到。
------解决方案--------------------
1、查看执行计划
2、确认相关表没有占用(排他锁等)
3、监控io性能。并发较大的情况,io会有比较大变化
------解决方案--------------------
按7楼说的去监视数据库性能和T-SQL语句执行效率。
估计是哪个地方锁住了。
------解决方案--------------------
每次执行都有可能性能不同,因为查询的表有可能是在做一些DML操作导致Blocking