如何在Oracle解释计划中解释成本与字节?
我有一个查询,我正在两个表之间进行连接,并且有许多过滤器。 我执行解释计划,明白了如何在Oracle解释计划中解释成本与字节?,oracle,sql-execution-plan,Oracle,Sql Execution Plan,我有一个查询,我正在两个表之间进行连接,并且有许多过滤器。 我执行解释计划,明白了 cost:214, Bytes: 6154, Cardinality:67 为了降低成本,我在一个列上创建了一个基于函数的索引,该列以前也用作查询中的一个过滤器。我收集了表格统计数据,然后收集了索引统计数据。现在,我又开始解释计划了。这次我明白了 cost:214, Bytes: 122604, Cardinality:1202 我的问题是:成本和字节之间的关系是什么?为什么字节数和基数会增加?创建基于函数的
cost:214, Bytes: 6154, Cardinality:67
为了降低成本,我在一个列上创建了一个基于函数的索引,该列以前也用作查询中的一个过滤器。我收集了表格统计数据,然后收集了索引统计数据。现在,我又开始解释计划了。这次我明白了
cost:214, Bytes: 122604, Cardinality:1202
我的问题是:成本和字节之间的关系是什么?为什么字节数和基数会增加?创建基于函数的索引不应该降低一点成本吗
有人能帮我理解这一点吗?成本记录在SQL调优指南中(但不是字节数): 优化器成本模型考虑了 预测查询将使用 成本是表示估计成本的内部数字度量 计划的资源使用情况。成本是特定于数据库中的查询的 优化器环境。为了估计成本,优化器考虑 以下因素:
System resources, which includes estimated I/O, CPU, and memory
Estimated number of rows returned (cardinality)
Size of the initial data sets
Distribution of the data
Access structures
注:
成本是优化器用于比较的内部度量
同一查询的不同计划。您不能调整或更改成本
执行时间是成本的函数,但成本并不相等
直接到时间。例如,如果查询A的计划具有较低的
成本高于查询B的计划,则以下结果为
可能的:
A executes faster than B.
A executes slower than B.
A executes in the same amount of time as B.
因此,您无法将不同查询的成本与单个查询进行比较
另一个此外,您无法比较语义等价的成本
使用不同优化器模式的查询
看
别忘了解释计划只是估计的计划。
要检查实际计划的实际执行情况,请使用DBMS\u XPLAN.DISPLAY\u CURSOR或SQL trace。要回答所有问题,请发布SQL查询并解释计划输出。