This Domain(Admin5.com) is for Sale:

如何让你的SQL运行得更快

时间:2007-12-23  来源:不详  作者:迈克DB



实践证实,表的行数越多,工作表的性能就越差,当stuff有620000行时,执行时间竟达到220秒!还不如将or子句分开:

select count(*) from stuff where id_no=′0′ select count(*) from stuff where id_no=′1′ 

织梦好,好织梦




得到两个结果,再作一次加法合算。因为每句都使用了索引,执行时间只有3秒,在620000行下,时间也只有4秒。或者,用更好的方法,写一个简单的存储过程:

create proc count_stuff as declare @a int declare @b int declare @c int declare @d char(10) begin select @a=count(*) from stuff where id_no=′0′ select @b=count(*) from stuff where id_no=′1′ end select @c=@a @b select @d=convert(char(10),@c) print @d 织梦内容管理系统 



直接算出结果,执行时间同上面一样快!


总结:


可见,所谓优化即where子句利用了索引,不可优化即发生了表扫描或额外开销。


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


2.in、or子句常会使用工作表,使索引失效;假如不产生大量重复值,可以考虑把子句拆开;拆开的子句中应该包含索引。


3.要善于使用存储过程,它使SQL变得更加灵活和高效。


从以上这些例子可以看出,SQL优化的实质就是在结果正确的前提下,用优化器可以识别的语句,充份利用索引,减少表扫描的I/O次数,尽量避免表搜索的发生。其实SQL的性能优化是一个复杂的过程,上述这些只是在应用层次的一种体现,深入研究还会涉及数据库层的资源配置、网络层的流量控制以及操作系统层的总体设计。

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息