+ -
当前位置:首页 → 问答吧 → sql server下的sql查询性能优化,有经验的进

sql server下的sql查询性能优化,有经验的进

时间:2011-12-28

来源:互联网

小弟前几周在维护老项目时碰到百万级数据,有些sql响应较慢,后来解决了!

打算过几天在月会上给同事们分享一下,我怕自己提出的解决方案太片面,所以集思广益一次,谢谢大家!

作者: keenweiwei   发布时间: 2011-12-28

太郁闷了,刚才发了一次贴,居然来了个“服务器无法响应”!只好再发了一次!

作者: keenweiwei   发布时间: 2011-12-28

上你的解决方案 让我学习学习

作者: Beirut   发布时间: 2011-12-28

我那只是:建索引,用临时表,改sql语句的写法,改源代码取数据的方式等等。

我觉得也许还有更多更好的解决方案,坐等大牛!
大家分享自己在项目中的1,2个点就行了!

作者: keenweiwei   发布时间: 2011-12-28

当数据量比较大的时候,建立索引确实是好办法,如果是存储过程,我觉得可以根据实际情况建立表变量或者临时表,把数据先存在里面,后面再处理。

还有就是像我工作时,虽然主要是报表sql,但是语句比较复杂,很多时候最后的结果是由多个表关联生成的,而这多个表又是由很多其他表关联生产的,这个时候sql server偶尔在关联时,采用了错误的关联算法,那么通过关联提示,强制采用其他更为合适的算法,效率可提高数百倍。

作者: yupeigu   发布时间: 2011-12-28

引用 6 楼 keenweiwei 的回复:

我那只是:建索引,用临时表,改sql语句的写法,改源代码取数据的方式等等。

我觉得也许还有更多更好的解决方案,坐等大牛!
大家分享自己在项目中的1,2个点就行了!

其实也就这些了,你在实际工作上把性能显著提高了,大家都看在眼里
你组织一下语言,演讲一把,你就火了

作者: Beirut   发布时间: 2011-12-28

另外,改变sql代码的实现逻辑也是一个好办法,多想想逻辑如何实现更好,在关联表时,通过优化逻辑,减少关联表的个数,往往sql server就能省点力,如果只是为了完成任务,不假思索,那么结果往往是运行很慢,最后还是不得不去优化,这个是很大的返工,吃力不讨好。

作者: yupeigu   发布时间: 2011-12-28

前段时间,和同事一起优化一段sql语句,一开始运行得10多分钟,后来优化了逻辑速,外加关联提示,提速到3分多钟,再建立索引之后缩短到1分30秒左右,但是当服务器比较繁忙的时候,速度又慢到5分多钟,客户意见比较大,还得继续优化,所以优化是无止境的,呵呵,还得继续努力。

作者: yupeigu   发布时间: 2011-12-28

记着索引一定要过段时间重整,否则索引也没效果了。

作者: evan2005   发布时间: 2011-12-28

使用 hint

作者: hebeishimeng   发布时间: 2011-12-28