对复杂查询进行基准测试

时间:2018-05-25 12:10:34

标签: sql sql-server performance ssms

我有两个查询执行相同,中等复杂的任务。一个加入子查询,一个使用表变量。我想运行测试,以便我看到重复执行所花费的总时间。

然而,我在网上找到的一个简单方法有几个问题:

DECLARE variables
SET STATISTICS TIME ON

/* Benchmark query 1 */
/* Benchmark query 2 */

SET STATISTICS TIME OFF

我用WHILE - 循环扩展了它。

的问题:

  • 计时器勾选每个循环(查询执行)和每个子'过程',而不是整个while语句。
  • 当我再次插入相同的项目时,具有UNIQUE列的行的临时表会从第二次迭代中抛出错误。
  • SSMS显示结果窗口中的每个结果集,这不是基准点。
  • 接近0 ms的大多数时间表示正在进行一些缓存。(可能是由于表变量查询中的许多子阶段被逐一记录)
  • 在再次声明时,查询中声明的变量会产生错误。

当我开始研究基准测试时,我假设有一种简单的方法可以反复执行文件中的查询并计算执行时间。我发现的唯一的东西是SQLCmd,但它看起来并不像我需要的所有,我宁愿在SSMS中做所有这些。

那么,我上面描述的过程是否可能?如果是这样,我需要什么?如果没有,那么对比更复杂的查询进行基准测试的标准方法是什么,而不仅仅是单个SELECT

任何指针都会非常感激,因为我是这场比赛的新手。

0 个答案:

没有答案