gpt4 book ai didi

sql-server - 比较 SQL 查询的 2 个变体的性能的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 23:34:25 24 4
gpt4 key购买 nike

我有一个在虚拟环境下运行的 SQL 2005 数据库。

为了简化事情,假设我有两个 SQL SELECT 查询。他们都做完全相同的事情。但我正在尝试出于性能目的来分析它们。

通常,我会启动本地数据库,加载一些数据并使用计时来将一种变体与其他变体进行比较。

但在本例中,由于数据库很大并且它是一个测试箱,因此客户端将其放置在也为其他虚拟机提供服务的主机上。

数据库太大,无法在本地拉取,因此(至少目前如此)。

但我的主要问题是,当我对服务器运行查询时,计时到处都是。我可以运行 +exact+ 相同的查询 4 ​​次,并获得 7 秒、8 分钟、3:45 分钟和 15 分钟的计时。

我的第一个想法是使用 SET STATISTICS IO ON。

但是,这基本上会产生正在查询的表上的读取和写入统计信息,根据查询的变化(临时表、 View 、连接等),除了聚合之外,无法真正准确地进行比较.

然后,我想到了 SET STATISTICS TIME ON,并且只使用 CPU 时间,但这似乎会折扣所有 IO,这也无法形成良好的基线。

我的问题是,在这种情况下是否还有其他有用的统计或性能分析技术?

最佳答案

STATISTICS IO 信息仍然有用。您可能会看到读取、写入和扫描的数量明显不同,这将使哪个查询更好变得显而易见。

您还可以查看每个查询的执行计划信息。您可以选择查询 -> 显示估计执行计划来查看 SQL Server 估计运行查询的图形表示。您还可以使用“查询”->“包括实际执行计划”来显示实际使用的计划。

而且,您还可以使用 SET SHOWPLAN_TEXTSET SHOWPLAN_ALLSET SHOWPLAN_XML 包含执行计划,以查看执行计划的文本显示计划。

查看执行计划的结果时,您可以查看估计成本值并比较每个查询的值。估计成本是一个相对值,可用于比较每个选项的成本。

关于sql-server - 比较 SQL 查询的 2 个变体的性能的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5383756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com