大家在写sql语句的时候,会来测试同一功能不同的两句甚至多句sql语句的性能,执行一下,看看执行时间.
而同一条sql语句,在查询分析器下,几乎每次执行的时间都会不同(,当然这里有系统的因素在内),有时甚至会差别很大(10倍以上,改变索引又改回).因而对多句sql执行时间进行比较也就不会准确了.各位是怎么写测试sql性能的语句的呢?
怎样去掉/减小那些外部环境的影响因素的呢?
欢迎各位高手们传授点经验,顺便散分.

解决方案 »

  1.   

    用执行计划,多少可以看一点出来执行计划:查询分析器-->查询-->显示查询计划
      

  2.   

    一条sql语句在两次甚至多次执行时,会出现时间变动的情况,产生这种变动的因素,就是外部因素.
    在两条sql语句的执行时间比较时,尽可能的去掉/减杀这种外界因素,才能够得到一个相对准确的比较结果来,而这个结果才是我们所要的性能比较结果.因为一般来说,在同一台机器上,两条sql语句的性能如何,做比较的最简单方法,就是比较它们的执行时间。
      

  3.   

    比如,从两个表中查询数据,可能用到子查询,关联查询,而不同方法对某一个特定查询所体现出来的性能差异,有可能跟数据量有关系.同一条sql语句,在数据量为10万的时候可能两种方法的性能差异不是很明显,但是当数据量达到100万的时候,或许性能差异就比较明显.对一条sql语句的性能分析,或是对两条甚至多条sql语句的性能进行比较,尽量的放大性能差异,才能够为我们所看到,理解。
      

  4.   

    顶下 我也有许多疑惑 有时只知道达到效果 但是具体好多SQL语句的执行过程是怎么样的 不时很清楚 虽然知道看些执行计划 但不知道用什么去替换它
      

  5.   

    对,不同数据等级(10万  100万 1000万),同样的SQL 语句,它的效率可能是不相同的.而‘显示查询计划’和‘显示服务器跟踪‘,显示的是在当前数量级别下的.
      

  6.   

    http://community.csdn.net/Expert/topic/4867/4867641.xml?temp=.910473這個帖子里有一些較常用的SQL的效率,有老大的回答~~~
      

  7.   

    看来比较两句sql性能的优劣,大家大多是用执行计划来分析的.
    执行计划的分析,大家有什么经验吗?
    如何分析呢?
      

  8.   

    找到一个sqlserver性能优化方面的网站,与大家分享.
    http://www.sql-server-performance.com/
      

  9.   

    执行计划的优劣如何看呢,比如我为了得到一笔数据,分别用了子查询,联合查询,右关联查询,它们的执行计划如下,该如何分析?
    1.SELECT(0%)<-Compute Scalar(0%)<-Hash Match/Righ(3%)<-Hash Match/Aggr(6%)<-TB1(81%)
                                                         <-TB2(11%)[接Hash Match/Righ]2.SELECT(0%)<-Hash Match/Aggr(1%)<-Compute Scalar(0%)<-Hash Match/Inne(2%)<-
    <-Hash Match/Aggr(6%)<-TB1(80%)
    <-TB2(10%)[接Hash Match/Inne]3.SELECT(0%)<-Parallelism/Gat(7%)<-Hash Match/Aggr(27%)<-Parallelism/Rep(9%)<-
    <-Compute Scalar(0%)<-Hash Match/Righ(6%)<-Parallelism/Rep(2%)<-TB1(5%)
                                             <-Parallelism/Rep(3%)<-TB2(40%)[接Hash Match/Righ]谁能帮我分析一下,三个查询的优劣呢?
    多谢先。
      

  10.   

    注:上面凡是后面有[接...]的,都是执行计划图的分支.我简化处理了。
    因为在右面的部分,涉及到两个表TB1,TB2,是属于不同分支的。
      

  11.   

    set statistic on 
    SQL语句 
    看它逻辑读 次数 越少越好 
      

  12.   

    最初是看了老大的一篇文章:《TOP 1比不加TOP慢的疑惑》(见http://blog.csdn.net/zjcxc/archive/2006/07/10/898861.aspx)后,想到通过通过组织测试数据及环境,分别执行后,可以明显的看到两种方法执行时间的差异。
    其测试所涉及到的点有三个:数据量,查询方法,查询时间。
    老大是已知查询方法,然后组织数据量,最后得出查询时间(体现不同方法不同性能,且比较明显的)。
    这种比较,是针对不同方法而言,那么能否套用到特定的某一个或几个查询呢?
    也就是:已知数据量,然后采用不同方法,来得出查询时间(体现不同方法不同性能,且比较明显的)。这就是我发这个帖子的初衷。
      

  13.   

    偶也知道查询分析器里的“执行计划”、“服务器跟踪”、“客户统计”。但那是%,消耗时间长短等信息,这个只知道那几条语句花费cpu,时间等相对的情况,具体这中间哪条语句需要优化(如果只一条语句,好像没可比性),这偶不太清楚。。只知道根据这些信息得到太概的情况,不知道怎么怎样更好的利用,分析这些信息,望告之一二,谢谢
      

  14.   

    sql 2005 自带有分析工具。和优化建议。执行你的SQL,它会引导你去建所以,和替换SQL.
      

  15.   

    declare @a datetime
    set @a=getdate()
    select cast(datediff(ms,@a,getdate()as int)as date 
    from tablename