tsql - 计算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
解决方案
没有办法做你正在寻找的东西。SQL Server 为批处理中的每个查询生成一个计划。而且您的批次中正好有 3 个查询,因为
SELECT max(date_created)
FROM log_table
WHERE user_id = 1
也是一个查询。
查询成本的划分并不总是比较性能的最佳方式。我建议您比较读取次数或平均执行时间。
或者只是单独执行它们,这也可以解决问题。
推荐阅读
- python - 如何在 Tkinter 中清除坐标?
- reactjs - React 路由器配置中 HoC 的 Typescript 类型
- derby - Apache Derby 无法删除数据库中的记录,因为没有足够的时间
- c# - 完全设置 .NET Core Web API 以使用 Azure AD 身份验证
- typescript - 如何使用记录键作为函数 arg 类型的索引?
- redis - 如何在 Windows 7 上的命令提示符下从 Redis 客户端的输出中漂亮地打印 json 字符串?
- mysql - 没有root权限可以通过ansible安装和配置MariaDB吗?
- python - 熊猫每月重新采样保持第一次约会
- iis - 在 IIS 中测试时重定向模式匹配,但不在浏览器中
- windows - 如何在 Windows 10 上安装 MinGW 64