问题描述:表A是存放在实际数据库中的表,它有近20万条数据,存在远端的MS服务器上。
表B是从表A中导出的表,它的数据和表A一样。存放着本地的MS服务器上。
它们的表结构如下:
查询语句:
select BTSTab_ID,Ua,Ub,Uc,DC,Tempera,Humid,Smoke,Water,Door,Mod,AirCond,
Engine,Cable,AirOutEquipt,PowerAlarmInfo,DateTime
from DataTab_HF
WHERE DateTime between '2014-03-28 00:00:00' and '2014-04-28 23:59:59'
查询的时间:对表A的查询时间要8秒,对表B的查询时间只需要1秒不到。
远端服务器是在公司内网中,为了排除网络问题,我在另一台电脑上,同时连接两个服务器,查询结果仍旧如上现象。
------解决方案--------------------
set statistics time on
set statistics io on
在执行语句前面加上这个,看时间花在哪了
------解决方案--------------------
先用10楼的方法测测
------解决方案--------------------
这并不一定就肯定是查询的问题,你让能上服务器的去看看服务器的内存使用率和CPU占用率,一般服务器使用肯定比你本地要多,如果这两个都高,别说查询了,就是windows都会很慢
------解决方案--------------------
觉得14楼说的有道理
A表的逻辑读比B表的逻辑读多了500次,这500次IO不会造成太大的影响
500次逻辑读在我本机也就200-300毫秒
反倒是A表的执行时间:耗费时间 = 8661 毫秒。
比B表的执行时间:占用时间 = 653 毫秒。
高出了不少,证明A表所在的服务器比较忙,有其他的请求占用了IO资源,使得查询得不到最快的相应