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。
     
    后续   
  • 相关阅读:
    vue简单的富文本实现(亲测可以)
    做手机兼容性看友盟手机统计
    压测并发数上不去的原因分析(泽嵩大佬说的)
    跨域问题解决
    jmeter压力测试报Address already in use: connect错误
    选择器(可搜索)+气泡提示组件
    2020
    Redis集群搭建采坑总结
    echarts自定义背景图片
    百度ECharts地图Json数据在线下载(geoJson)
  • 原文地址:https://www.cnblogs.com/samsonleung/p/1229625.html
Copyright © 2011-2022 走看看