一些对SQL查询速度影响的因素

之前看了"Delphi学习"兄有关SQL语句查询效率的一篇文章( http://hi.baidu.com/delphistu/blog/item/5982e90370e15ee808fa93a2.html),自己也想试试效果。
实验对象:Adab 共有 76314条记录
declare @a datetime
declare @i int
set @a=getdate()
--这里加试验语句
--
如:select * from Adab
set @i=datediff(millisecond,@a,getdate()) --millisecond表示毫秒
print @i

结论1:Select * 语句对速度影响很大。
     select * from Adab 用时:35940  (共57个字段)
    select xhjm,xm,xjztdm,bdm,nj,dwdm from Adab  用时 4186
    select xhjm,xm  from Adab  用时1626
    select xm from Adab   用时830
   可以看得出每增加一个字段,时间会增加几乎是一倍。
    另外,返回的数据的长度也会影响时间:
  如  select sfzh from Adab 用时1580  几乎与select xhjm,xm from Adab相同。
因此,返回的数据量是影响速度最关键的因素。网络上的数据传送成了执行SQL最大的性能问题。
执行一个selec dwdm,count(xhjm) from Adab的语句,用时106 要汇总计算,但传送数据少,因此速度很快。

结论2 :索引的作用在SQL查询中order by 作用没有想像中大。
           但按聚集索引字段进行排序,效率最高。
           但对分组的影响较为明显。
   xhjm 为聚集索引,xm为非聚集索引
   select xhjm,xm,xjztdm,bdm,nj,dwdm from Adab
   order by xhjm  未建聚集索引时,用时4890  建立后4173 因此影响不是太明显。
   如果order by xm 没有索引时会5106 ,有索引为5093 影响甚小。
  
  对dwdm、bdm做了一个复合索引。
执行
  select dwdm,bdm ,count(xhjm) from Adab
group by dwdm,bdm
未建索引用时360 建立索引后是170 ,几乎是一倍的时间 。只对dwdm建索引是170 ,未建是76。
 
后续   

转载于:https://www.cnblogs.com/samsonleung/archive/2008/06/25/1229625.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值