zoukankan      html  css  js  c++  java
  • 一些对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。
     
    后续   
  • 相关阅读:
    max()和数组里面的max
    NYOJ 超级台阶
    NYOJ Fibonacci数
    floor()向下取整函数
    pow()函数
    HDU 小数化分数 1717
    大端和小端存储
    字节对齐
    CvvImage内存泄漏解决
    01矩阵中,把0的点的行和列都置零
  • 原文地址:https://www.cnblogs.com/samsonleung/p/1229625.html
Copyright © 2011-2022 走看看