日期:2014-05-18  浏览次数:20638 次

Sql Server中由于数据量较大,写存储过程时应从那些方面着手来提高查询速度呀
Sql   Server中,
我在写存储过程的时候,由于数据量较大,并且其中还有一定量的计算,除建立索引外还应从哪些方面来提高执行速度啊?

多谢了!!!

------解决方案--------------------
给大家推荐个

好的技术群  大家一起学习啊

32141736
------解决方案--------------------
http://community.csdn.net/Expert/topic/4704/4704136.xml?temp=.7604944


SQL语句优化的原则: (我lisiyong大概的小结了一下!!)

1、使用索引来更快地遍历表。
一般来说:
①.有大量重复值、且经常有范围查询,可考虑建立群集索引;
②.经常同时存取多列,且每列都含有重复值可考虑建立组合索引;
③.组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列。


(下面几点可能是你要考虑到的)

2、IS NULL 与 IS NOT NULL

不能用null作索引,任何包含null值的列都将不会被包含在索引中。

EXISTS要远比IN的效率高。
4、在海量查询时尽量少用格式转换。

5、当在SQL SERVER 2000中,如果存储过程只有一个参数,并且是OUTPUT类型的,
必须在调用 这个存储过程的时候给这个参数一个初始的值,否则会出现调用错误。
6、ORDER BY和GROPU BY

使用ORDER BY和GROUP BY短语,任何一种索引都有助于SELECT的性能提高。注意如果索引列里面有NULL值,Optimizer将无法优化。

7、任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能 将操作移至等号右边。!!!!

8、IN、OR子句常会使用工作表,使索引失效。如果不产生大量重复值,可以考虑把子句拆开。拆开的子句中应该包含索引。


9、SET SHOWPLAN_ALL ON 查看执行方案。DBCC检查数据库数据完整性。

DBCC(DataBase Consistency Checker)是一组用于验证 SQL Server 数据库完整性的程序。

10、慎用游标
在某些必须使用游标的场合,可考虑将符合条件的数据行转入临时表中,再对临时表定义游标进行操作,这样可使性能得到明显提高。




------解决方案--------------------
我BIOG: http://blog.csdn.net/lisiyong/

中我也总结了下 而且有篇关于索引优化的帖子。
------解决方案--------------------
他们都讲了很多有关索引优化的了,我想也可以用临时表,或将查询的结果数据存在另一个表中。这样可以很大程序提高查询
不过这通常是要经过复杂的查询才会考虑这个方法.我个人认为这也是一个很好的方法