求助,升级到SQL2008后查询速度巨慢!T_T...

「已注销」 2010-08-17 04:57:42

服务器配置 是Dell至强 4g内存 500g硬盘,带宽是10M宽带。
版本是:
Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86) Mar 29 2009 10:27:29 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition on Windows NT 5.2 <X86> (Build 3790: Service Pack 2)

以前用的sql2000 查询结果能很快的显示出来,可自从升级到2008以后,直接是被搞败了,原先30秒出的结果,弄了6分钟...
只是列出一个10000行的数据表都执行了10分钟还是出不来!!!

请问下各位有谁知道SQL2008怎么优化查询吗?!谢谢各位了!
...全文
714 16 点赞 打赏 收藏 举报
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
「已注销」 2010-11-07
[Quote=引用 14 楼 wbflike 的回复:]
你好我遇到急事,问题跟你帖子描述的一样,SQL2008查询很慢,能给我下你的联系方式吗?
[/Quote]
...不好意思,最近没上CSDN。。我这问题解决了,可能是远程服务器的问题,那段时间加了一个VPN,我不知道这情况。。断开那个VPN后就正常了!

  • 打赏
  • 举报
回复
wbflike 2010-10-31
楼主我已经找到了解决办法,你没有解决的话可以联系我:wbflike@gmail.com
  • 打赏
  • 举报
回复
wbflike 2010-10-27
你好我遇到急事,问题跟你帖子描述的一样,SQL2008查询很慢,能给我下你的联系方式吗?
  • 打赏
  • 举报
回复
guguda2008 2010-08-17
恩,楼上的话很中要害。
  • 打赏
  • 举报
回复
sqlserver5 2010-08-17
大家要注意,升级SQLServer, 一定要更新一下统计信息,这个很重要。
  • 打赏
  • 举报
回复
sqlserver5 2010-08-17
更新一下统计信息:sp_updatestats
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sea267 的回复:]
...只是select列出来数据,没用用到 where。。哎,真败了,奇慢无比!@!@!@
[/Quote]
没where的语句用于项目?那本来就该慢
  • 打赏
  • 举报
回复
「已注销」 2010-08-17
操作系统是 WINDOWS 2003 SP2 ,哎,郁闷啊。。。。
  • 打赏
  • 举报
回复
obuntu 2010-08-17
重建索引应该就可以吧

  • 打赏
  • 举报
回复
guguda2008 2010-08-17
数据库的升级没研究过,可能是在表升级的过程中产生了大量的磁盘碎片导致表的物理存储不连续。试试重建主键和整理磁盘碎片。
  • 打赏
  • 举报
回复
guguda2008 2010-08-17
[Quote=引用 4 楼 sea267 的回复:]

...只是select列出来数据,没用用到 where。。哎,真败了,奇慢无比!@!@!@
[/Quote]
检查主键有没有复制过来,删除主键再重建一遍试试。
  • 打赏
  • 举报
回复
jenhon 2010-08-17
原来还打算升到2008,目前准备继续观望......


你的操作系统是哪个?如果不是2003,可能转到2003比较好。
  • 打赏
  • 举报
回复
「已注销」 2010-08-17
...只是select列出来数据,没用用到 where。。哎,真败了,奇慢无比!@!@!@
  • 打赏
  • 举报
回复
claro 2010-08-17
重建索引试试。
  • 打赏
  • 举报
回复
guguda2008 2010-08-17
检查执行计划看是不是有索引失效了,重建相关索引再试试。
  • 打赏
  • 举报
回复
dawugui 2010-08-17
升级到SQL Server 2005的常见问题解答 
http://database.ctocio.com.cn/tips/314/7573314.shtml


在SQL Server 2005中升级存储过程

作者:Serdar Yegulalp 2007-05-29

《SQL Server 2005的变化》一文中揭示了SQL Server 2005的变化如何打破了旧有的应用程序和数据库,特别是使用被抛弃的函数的地方。现在我将要讨论的是如何在你的移植过的数据库里面使用存储过程来充分利用这个SQL Server2005中的新函数,而不需要打破现有的功能性。

我们假设你有一个前端的应用程序,是由不同的团队来分别写入或者管理,并且它不像后台数据库那样频繁更新。你想要在SQL Server应用程序的存储过程中进行修改以充分利用新的功能。你还想要这个过程尽量温和,这样数据库和前端应用程序就都不会突然崩溃。

例如,你想要更新存储过程来使用SQL Server 2005的T-SQL中一些新的功能,例如TRY and CATCH函数,这个函数可以让复杂的错误追踪变得简单一点。你通常会拷贝现有的存储过程到一个新的并行的存储过程里面去,然后对它进行更新,使用新的功能,然后或者在经过修改的前端应用程序版本,或者查询分析器中测试两方面的行为。

当你很自信新的存储过程的行为是正确的,并且它也准备好用在产品中,你就可以无缝的替换它,例如通过修改两个存储过程的名字,或者通过代码的拷贝。我个人倾向于修改名字,因为这可以让你对原有的代码做个备份——像你的数据库中的其它东西一样,做个备份,以防出现不可预期的问题。

这是相对标准的技术,但是我曾见过的更有意思的一个问题涉及了可选参数传递:

CREATE PROCEDURE my_procedure
{其它的参数在这里},
@optionalparameter Boolean=FALSE
AS
If @optionalparameter=TRUE
Begin
{带有SQL Server 2005-特定命令的新版本的存储过程放在这里}
End
Else
Begin
{旧版本的存储过程放在这里}
End

还有另外一种有用的方式来选择性的测试代码。现有的前端对存储过程的呼叫不会使用可选参数,还会执行原来的代码。你可以在这里使用新的前端代码来测试存储过程,然后优雅地更新对现有存储过程的参考。因为参数是可选的,所有现有的对存储过程的呼叫(例如那些没有参数的呼叫)都会像以前一样准确地传递过去。

如果你不能添加新的存储过程,但是可以修改现有的存储过程的话,还有一种在这种限制下的好办法。当没有保留历史遗留代码的时候,你可以在存储过程中逐步淘汰IF。最后,在存储过程和你的前端代码中逐渐放弃可选参数。
  • 打赏
  • 举报
回复
相关推荐
发帖
疑难问题
加入

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-08-17 04:57
社区公告
暂无公告