计算sql查询的性能

Posted

技术标签:

【中文标题】计算sql查询的性能【英文标题】:Calculate performance of sql query 【发布时间】:2019-12-27 10:35:00 【问题描述】:

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

    ----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

【问题讨论】:

显然 2 个查询的总成本百分比将是 100%... @Milney 是的。我已经编辑了我的问题。 【参考方案1】:

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

        SELECT max(date_created)
        FROM log_table
        WHERE user_id = 1

也是一个查询。

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

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

【讨论】:

以上是关于计算sql查询的性能的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server-聚焦计算列或计算列持久化查询性能(二十二)

SQL查询性能调优--如何使查询更快

带有时间戳和变量的 SQL Server 查询性能

F# 查询表达式是不是具有与本机 SQL 相同的性能?

在 SQL Server 2008 中使用 FOR XML PATH 提高 SQL 查询的性能

如何进行SQL性能优化