首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle解释计划中关于成本的问题

问Oracle解释计划中关于成本的问题
EN

Stack Overflow用户
提问于 2010-04-06 00:22:14
回答 2查看 715关注 0票数 2

当Oracle估算某些查询的“成本”时,它是否真的查看表中的数据量(行)?

例如:

如果我对employees执行全表扫描,查找name='Bob',它是通过计算现有行的数量来估计成本,还是总是设置成本?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-06 13:39:44

在缺省配置中,Oracle将检查表统计信息(您可以通过查询ALL_TABLES视图查看表统计信息-请参见列NUM_ROWS)。通常,Oracle作业会定期运行,通过查询部分或全部表来重新收集这些统计信息。

如果(尚未)收集到统计信息,优化器将(根据optimizer_dynamic_sampling参数)对该表运行一个快速样本查询,以计算该表中行数的估计值。

(更准确地说,扫描表的成本不是根据行数计算的,而是根据表中的块数计算的(您可以在ALL_TABLES的BLOCKS列中看到)。它采用此数字并将其除以与多数据块读取计数相关的因子,以计算该部分计划的成本。)

票数 3
EN

Stack Overflow用户

发布于 2010-04-06 01:09:07

成本优化器使用段(表和索引)统计信息以及系统(cpu + i/o性能)统计信息进行估计。尽管这取决于数据库的配置方式,但从10g开始,调用DBMS_STATS包的进程通常每天计算一次段统计信息。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2579489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档