在多个SQL查询中测试性能

ImG*_*reg 4 sql t-sql performance sql-server-2008

我正在努力提高SQL-Server-2008上一些SQL查询的效率.有不同的方法来执行每个查询,我想找到最快的.

但是,我遇到的问题是我无法确定哪个实际上执行得更快.理想情况下,我可以一个接一个地运行每个查询,看看哪个运行最快.理想的情况下...

问题是,SQL对我来说太聪明了.在构造这些查询时,我多次运行它们.当我这样做时,查询的效率会自行提高.我想成像是因为SQL所做的一些幕后工作.这是什么?我怎么能避免呢?

例如,我运行一次查询,需要30秒.我再次运行它需要10秒.运行查询的次数越多,运行速度就越快.

那么..有没有"清除缓存"的方法或SQL中的等价物?我想准确地指出哪个查询实际上运行得更快.或者,什么是我想要的测试类型的最佳方法?

有关此主题的任何信息都将被接受为有效输入.

SQL*_*ace 8

当首先运行查询时,数据很可能仍在磁盘上,SQl Server必须获取此数据,当您运行相同的查询时,数据已经在RAM中,因此它将比进入磁盘快得多

运行DBCC DROPCLEANBUFFERSDBCC FREEPROCCACHE清除缓存而不重新启动

您需要查看执行计划,统计信息和统计时间,才能真正了解正在发生的事情.在计划中寻找转换和扫描(如果可能,您希望寻找).

另请参阅SSMS中的客户端统计信息.检查执行时间