Sql 如何从oracle EXPLAIN PLAN中定义查询优于其他查询

Sql 如何从oracle EXPLAIN PLAN中定义查询优于其他查询,sql,oracle,plsql,oracle-sqldeveloper,Sql,Oracle,Plsql,Oracle Sqldeveloper,我正在优化oracle查询。我发现新查询的成本比原来的低。我认为我的新查询可能比旧查询有更好的性能。但网上很多人说“成本栏不能用来比较执行计划”。所以我的问题是,如果不检查解释计划中的成本,您如何知道一个查询的性能优于另一个查询?还有别的办法吗?谢谢 查询计划是非常有用的动物。但是,一般来说,它们不是确定两个查询中哪一个更有效的有用方法。很少有人可以查看两个合理的查询计划并立即知道其中一个比另一个更高效。如果可以,这通常意味着其中一个计划存在严重缺陷(即,您看到的是对十亿行表的表扫描,而不是获取

我正在优化oracle查询。我发现新查询的成本比原来的低。我认为我的新查询可能比旧查询有更好的性能。但网上很多人说“成本栏不能用来比较执行计划”。所以我的问题是,如果不检查解释计划中的成本,您如何知道一个查询的性能优于另一个查询?还有别的办法吗?谢谢

查询计划是非常有用的动物。但是,一般来说,它们不是确定两个查询中哪一个更有效的有用方法。很少有人可以查看两个合理的查询计划并立即知道其中一个比另一个更高效。如果可以,这通常意味着其中一个计划存在严重缺陷(即,您看到的是对十亿行表的表扫描,而不是获取您感兴趣的10行的索引访问)


当涉及到比较两个不同的计划时,您需要关注执行统计数据。大多数情况下,测量实际的逻辑I/O是最简单的尺度。您可以通过在SQL*Plus中运行
set autotrace on
,或者使用SQL Developer中的autotrace选项(F6而不是F5来运行查询)来实现这一点。您还可以测量经过的时间,但这通常需要更多的努力来根据查询运行时不同缓存(数据库、操作系统、SAN等)中的块的比例来生成合理的基准。无论缓存如何,执行过程中的CPU时间可能会稍微稳定一些。有时,您会想测量一些其他统计数据(即,如果您正在优化涉及数据库链接的查询,则通过网络发送的数据量)。

查询计划非常有用。但是,一般来说,它们不是确定两个查询中哪一个更有效的有用方法。很少有人可以查看两个合理的查询计划并立即知道其中一个比另一个更高效。如果可以,这通常意味着其中一个计划存在严重缺陷(即,您看到的是对十亿行表的表扫描,而不是获取您感兴趣的10行的索引访问)


当涉及到比较两个不同的计划时,您需要关注执行统计数据。大多数情况下,测量实际的逻辑I/O是最简单的尺度。您可以通过在SQL*Plus中运行
set autotrace on
,或者使用SQL Developer中的autotrace选项(F6而不是F5来运行查询)来实现这一点。您还可以测量经过的时间,但这通常需要更多的努力来根据查询运行时不同缓存(数据库、操作系统、SAN等)中的块的比例来生成合理的基准。无论缓存如何,执行过程中的CPU时间可能会稍微稳定一些。有时,您会想测量一些其他统计数据(即,如果您正在优化涉及数据库链接的查询,则通过网络发送的数据量)。

查询计划非常有用。但是,一般来说,它们不是确定两个查询中哪一个更有效的有用方法。很少有人可以查看两个合理的查询计划并立即知道其中一个比另一个更高效。如果可以,这通常意味着其中一个计划存在严重缺陷(即,您看到的是对十亿行表的表扫描,而不是获取您感兴趣的10行的索引访问)


当涉及到比较两个不同的计划时,您需要关注执行统计数据。大多数情况下,测量实际的逻辑I/O是最简单的尺度。您可以通过在SQL*Plus中运行
set autotrace on
,或者使用SQL Developer中的autotrace选项(F6而不是F5来运行查询)来实现这一点。您还可以测量经过的时间,但这通常需要更多的努力来根据查询运行时不同缓存(数据库、操作系统、SAN等)中的块的比例来生成合理的基准。无论缓存如何,执行过程中的CPU时间可能会稍微稳定一些。有时,您会想测量一些其他统计数据(即,如果您正在优化涉及数据库链接的查询,则通过网络发送的数据量)。

查询计划非常有用。但是,一般来说,它们不是确定两个查询中哪一个更有效的有用方法。很少有人可以查看两个合理的查询计划并立即知道其中一个比另一个更高效。如果可以,这通常意味着其中一个计划存在严重缺陷(即,您看到的是对十亿行表的表扫描,而不是获取您感兴趣的10行的索引访问)

当涉及到比较两个不同的计划时,您需要关注执行统计数据。大多数情况下,测量实际的逻辑I/O是最简单的尺度。您可以通过在SQL*Plus中运行
set autotrace on
,或者使用SQL Developer中的autotrace选项(F6而不是F5来运行查询)来实现这一点。您还可以测量经过的时间,但这通常需要更多的努力来根据查询运行时不同缓存(数据库、操作系统、SAN等)中的块的比例来生成合理的基准。无论缓存如何,执行过程中的CPU时间可能会稍微稳定一些。偶尔,你会想测量一些其他的统计数据