跨服务器访问分区表,简单且有索引的查询都特别慢?
跨服务器访问分区表,简单且有索引的查询都特别慢?
链接服务器上的一个大表,分了100个区
select top 100,*
from otherserver.db1.dbo.tbxxx with(nolock)
order by fid desc
此表5亿条记录,有一个fid的索引了,但是花了2分30秒
在其服务器上的任务管理器可以看到cpu满负荷跑了这么久!
另外一个表:
select top 100,*
from otherserver.db1.dbo.tbyyy with(nolock)
order by fid desc
此表2.8千万条记录,结构、索引完全一样,只是没分区,只需0秒
执行计划的查询开销,前一个是95%,后一个是5%
两者都花了100%在 远程查询(Remote Query)
在otherserver上本地查这2个表也都是0秒!
执行计划的查询开销,也是 前一个95%,后一个5%
两者都花了100%在 RID查找
上面的sql加不加 with(nolock) 效果一样
另外,此服务器是刚刚启用,数据库是从一个旧服务器备份还原过来的,应该没什么特别的
sql2005企业版32位 运行于 win2008r2 64位;64G内存,1cpu4核超线程