这是一个简单的查询:select * from customers
当我在PL/SQL Developer中编写这个查询并按F5时,我看到了Explain Plan,但我不知道成本、基数和字节代表什么。
发布于 2018-02-12 00:01:52
有关计划表列的说明,请参见第12.10节。
https://docs.oracle.com/cd/E11882_01/server.112/e41573/ex_plan.htm#PFGRF009
成本是优化器估计通过特定计划运行查询的工作量。
成本由几个不同的因素决定,但表统计信息是最大的因素之一。
基数是优化器猜测将为计划步骤处理的行数。如果统计数据是旧的、丢失的或不完整的-那么这可能是大错特错的。您想要查看优化器看到5行(基数)的位置,但实际上有50,000行。
字节是与基数相同的概念,但纯粹是要处理的数据与表中的行。
这是一个非常深刻的话题,需要积极的学习和经验。我相信许多人都可以为去哪里提供想法。我个人很喜欢Maria's blog.,她是优化器的前产品经理。
发布于 2018-02-12 00:02:18
来自http://www.oracle.com/technetwork/database/bi-datawarehousing/twp-explain-the-explain-plan-052011-393674.pdf
什么是成本?
是一个基于成本的优化器。为SQL语句选择的执行计划只是优化器考虑的众多备选执行计划中的一个。优化器选择成本最低的执行计划,其中成本表示该计划的估计资源使用情况。成本越低,预计计划的效率就越高。优化器的成本模型考虑了查询将使用的IO、CPU和网络资源。图8:成本在执行计划的第五列中找到,整个计划的成本(在第0行表示)和每个单独的操作都显示在执行计划中。但是,它不是可以调优或更改的东西。成本是一个内部单位,显示成本只是为了进行计划比较。
您还可以查看Database Performance Tuning Guide,其中显示:
此列的值没有任何特定的度量单位;它只是一个用于比较执行计划成本的加权值。此列的值是CPU_COST和IO_COST列的函数。
So - cost是一个无量纲的值,它是CPU和IO成本的函数。
https://stackoverflow.com/questions/48732396
复制相似问题