单表50万条数据时,用SQL2008R2新建查询,耗时明显比SQL2000查询分析器执行慢的问题

Tikyliu 2018-08-15 04:25:55
单表50万条数据,当用 select * from TABLENAME SQL语句分别在SQL SERVER2000与 SQL SERVER2008 R2上用查询分析器/新建查询窗口 执行这条SQL语句时,SQL SERVER2000上的执行时间是5秒,SQL SERVER2008 R2上面的执行时间是 20秒,两者时间相差了几倍;
但是当我 用 这个加上条件的 SQL语句 ( select * from TABLENAME where XXX )再次分别去执行时,结果却是 SQL2008执行时间明显比 SQL2000 要短很多。

请高手赐教,该如何做,可以 让在SQL SERVER2008 R2上 执行 select * from TABLENAME 时 执行时间能跟SQL2000上一样快呢?
...全文
1465 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tikyliu 2018-08-25
  • 打赏
  • 举报
回复
这个问题,跟单表有多少数据量无关,单表不管是50万条,还是5000条,只要是简单的没有多表关联查询的SQL语句,SQL2000的执行时间都要比SQL2008短很多了。
Tikyliu 2018-08-25
  • 打赏
  • 举报
回复
@吉普赛的歌,我后来多次测试,发现一个问题,就是简单一点的SQL语句,譬如 select * from TableA ,没有关联任何表也没有加条件,的确 SQL SERVER2000的执行效率要比SQL2008高太多,但如果是复杂查询的SQL语句,那么SQL2008的效率是高于SQL2000的。不知道为什么会这样。
吉普赛的歌 2018-08-21
  • 打赏
  • 举报
回复
按我 #26 的, 安装 2014 或 2017 试试
Tikyliu 2018-08-20
  • 打赏
  • 举报
回复
已经结贴了,问题还是没有搞清楚,换了SSD固态硬盘问题依然,重新更新数据库统计与重新建立索引也都做了,结果还是一样。
哈哈gogo 2018-08-19
  • 打赏
  • 举报
回复
1.表的索引是否相同 2.数据库统计信息更新情况不一定相同
drifter2002 2018-08-19
  • 打赏
  • 举报
回复
1.表的索引是否相同 2.数据库统计信息更新情况不一定相同
Tikyliu 2018-08-16
  • 打赏
  • 举报
回复
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
吉普赛的歌 2018-08-16
  • 打赏
  • 举报
回复
看下 sqlserver 2008 的版本:
select @@version

文本贴出来看下。
Tikyliu 2018-08-16
  • 打赏
  • 举报
回复
我真是想不明白了,我新建了一个数据库,用CREATE TABLE创建了一样的表结构,一样的索引,然后用SQL2008的导入数据功能将以前数据库中的数据导入到新的数据库新创建的表中,在新库中用一样的SQL语句执行,结果时间还是要20秒。
吉普赛的歌 2018-08-16
  • 打赏
  • 举报
回复
引用 19 楼 Tikyliu 的回复:
确定的,SQL2000与SQL2008都默认安装在C盘,没有改过路径。数据库MDF LDF文件一直都在同一个盘符下面的,这个也是可以确定的。
现在在想可能是因为我将SQL2000的数据库文件直接附加到SQL2008上造成的吧,这个我还没有试过,有这个可能性。

有可能。
你在 sql2008 中创建一个新库, 按原表创建同样的表结构, 把旧表数据复制到新表, 再在新库里执行:
select * from A.

再试试
Tikyliu 2018-08-16
  • 打赏
  • 举报
回复
确定的,SQL2000与SQL2008都默认安装在C盘,没有改过路径。数据库MDF LDF文件一直都在同一个盘符下面的,这个也是可以确定的。
现在在想可能是因为我将SQL2000的数据库文件直接附加到SQL2008上造成的吧,这个我还没有试过,有这个可能性。
xiaoxiangqing 2018-08-16
  • 打赏
  • 举报
回复
正常来说,2008要快一些
吉普赛的歌 2018-08-16
  • 打赏
  • 举报
回复
引用 17 楼 Tikyliu 的回复:
好的,我会听你的换SSD硬盘测试一下速度的。其实,我最大的疑虑是,同一台服务器,同样的磁盘IO性能,为什么SQL2000与SQL2008同样的的数据量,同样的SQL语句,执行时间会差那么多,这也是我最想搞清楚的问题了。


你要确定sql2000和sql2008的数据库文件放在了同一硬盘的同一分区下。
否则没有可比性。
Tikyliu 2018-08-16
  • 打赏
  • 举报
回复
好的,我会听你的换SSD硬盘测试一下速度的。其实,我最大的疑虑是,同一台服务器,同样的磁盘IO性能,为什么SQL2000与SQL2008同样的的数据量,同样的SQL语句,执行时间会差那么多,这也是我最想搞清楚的问题了。
Tikyliu 2018-08-16
  • 打赏
  • 举报
回复
明天试SSD固态硬盘,将数据库文件放在SSD硬盘上然后看下效果,感谢楼上所有人的帮助,尤其是 吉普赛的歌。 不管问题是否解决,都对各位不甚感激!!
闭包客 2018-08-16
  • 打赏
  • 举报
回复
这种大量数据的全表查询,瓶颈在 IO 和 UI 展示,不同版本的查询分析器,UI 逻辑可能不同,我估计这是造成查询速度差异的原因。

Tikyliu 2018-08-16
  • 打赏
  • 举报
回复
哎,我也是被这个问题折磨的不行了,试了很不同的方法,结果还是一样,有没有其他高手能给点意见的啊。这太反常了。
qq_35809143 2018-08-16
  • 打赏
  • 举报
回复
a differect problem.
Tikyliu 2018-08-16
  • 打赏
  • 举报
回复
我微软官网上下载了SQL 2008 R2的 SP3补丁,成功安装后,还是跟以前一样要20秒,而且最关键的是不管执行多少次,时间始终是20秒,没有像SQL2000那样第二次执行从内存读取从而执行时间大大缩短。
吉普赛的歌 2018-08-16
  • 打赏
  • 举报
回复
更新了补丁, 看能不能改善吧。
加载更多回复(19)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧