首页 > 解决方案 > 计算sql查询的性能

问题描述

我有一个带参数的查询和一个不带参数的查询。试图比较他们的表现。目前,仅查询一个我就可以看到两个结果。这完全是我的执行计划中的三个成本百分比。有没有办法获得两个性能成本% 而不是三个?

    ----Query 1
    DECLARE @p2 DATETIME;

    SET @p2 = (
            SELECT max(date_created)
            FROM log_table
            WHERE user_id = 1
            )

    SELECT max(date_created) AS last_login
    FROM log_table
    WHERE date_created <= @p2

  ----Query 2
  SELECT max(date_created) AS last_login
  FROM log_table
  WHERE user_id = 1

标签: tsqlparametersquery-performance

解决方案


没有办法做你正在寻找的东西。SQL Server 为批处理中的每个查询生成一个计划。而且您的批次中正好有 3 个查询,因为

        SELECT max(date_created)
        FROM log_table
        WHERE user_id = 1

也是一个查询。

查询成本的划分并不总是比较性能的最佳方式。我建议您比较读取次数或平均执行时间。

或者只是单独执行它们,这也可以解决问题。


推荐阅读