大家在写sql语句的时候,会来测试同一功能不同的两句甚至多句sql语句的性能,执行一下,看看执行时间.
而同一条sql语句,在查询分析器下,几乎每次执行的时间都会不同(,当然这里有系统的因素在内),有时甚至会差别很大(10倍以上,改变索引又改回).因而对多句sql执行时间进行比较也就不会准确了.各位是怎么写测试sql性能的语句的呢?
怎样去掉/减小那些外部环境的影响因素的呢?
欢迎各位高手们传授点经验,顺便散分.
而同一条sql语句,在查询分析器下,几乎每次执行的时间都会不同(,当然这里有系统的因素在内),有时甚至会差别很大(10倍以上,改变索引又改回).因而对多句sql执行时间进行比较也就不会准确了.各位是怎么写测试sql性能的语句的呢?
怎样去掉/减小那些外部环境的影响因素的呢?
欢迎各位高手们传授点经验,顺便散分.
在两条sql语句的执行时间比较时,尽可能的去掉/减杀这种外界因素,才能够得到一个相对准确的比较结果来,而这个结果才是我们所要的性能比较结果.因为一般来说,在同一台机器上,两条sql语句的性能如何,做比较的最简单方法,就是比较它们的执行时间。
执行计划的分析,大家有什么经验吗?
如何分析呢?
http://www.sql-server-performance.com/
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]谁能帮我分析一下,三个查询的优劣呢?
多谢先。
因为在右面的部分,涉及到两个表TB1,TB2,是属于不同分支的。
SQL语句
看它逻辑读 次数 越少越好
其测试所涉及到的点有三个:数据量,查询方法,查询时间。
老大是已知查询方法,然后组织数据量,最后得出查询时间(体现不同方法不同性能,且比较明显的)。
这种比较,是针对不同方法而言,那么能否套用到特定的某一个或几个查询呢?
也就是:已知数据量,然后采用不同方法,来得出查询时间(体现不同方法不同性能,且比较明显的)。这就是我发这个帖子的初衷。
set @a=getdate()
select cast(datediff(ms,@a,getdate()as int)as date
from tablename