- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
列值的选择性、集簇和柱状图
切记,优化器了解表中列数据的许多重要特征,最显著的是列值的选择性和列的集簇因子。
例如,以下我们看到一个使用列值来形成结果集的查询:
select
customer_name
from
customer
where
customer_state = Rhode Island;
在此示例中,选择使用索引还是全表扫描受到罗得岛客户比例的影响。如果罗得岛客户的比例非常小,并且数值集簇在数据块中,则对于此查询而言索引扫描可能是最快的执行计划。
许多 Oracle 开发人员对于当他们只检索很少量的行时优化器选择全表扫描而感到困惑,而没有意识到优化器考虑了表中列值的集簇。
Oracle 在 dba_indexes 视图中提供一个名为 clustering_factor 的列,通知优化器关于表的行与索引的同步情况。当集簇因子接近数据块的数量时,表的行与索引同步。
列值的选择性、db_block_size、avg_row_len 以及集合基数全都协同工作,帮助优化器决定是使用索引还是使用全表扫描。如果数据列具有高度的选择性和低的 clustering_factor,则索引扫描通常是最快的执行方法(参见图 2)。
如果多数 SQL 引用了具有高 clustering_factor、大 db_block_size 和小 avg_row_len 的列,则 DBA 有时会周期性地对表的行进行重排序或使用单表集簇来维持行的顺序。这种方法将所有相邻的行放置在同一数据块中,消除了全表扫描,使查询速度的增加高达 30 倍。
相反,高 clustering_factor 的数值达到表中的行数 (num_rows),表明这些行的顺序与索引中的顺序不同,索引范围扫描将会需要额外的 I/O。由于 clustering_factor 达到表中的行数,这些行与索引不同步。
但是,即使列具有高度的选择性,高 clustering_factor 和小 avg_row_len 也会表示列值在表中随机分布,而获取这些行需要额外的 I/O。在此情况下,索引范围扫描会导致大量不必要的 I/O(参见图 3);全表扫描则会高效得多。
总而言之,clustering_factor、db_block_size 和 avg_row_len 全都影响优化器有关执行全表扫描或是索引范围扫描的决策,理解优化器如何使用这些统计信息非常重要。
我们已经注意到,每个新版本的优化器都有改进,并且 Oracle Database 10g 提供的必威体育精装版增强特性在确定执行计划时会考虑外部的影响。Oracle 称此特性为外部成本核算,并包括对 CPU 和 I/O 成本的评估。
SQL insert into test select * from emp;
14 rows created.
Commit complete.
SQLcreate index test_ename_ind on test (ename);
2、分析表
SQL analyze table test compute statistics;
Table analyzed.
3、查看列值的集簇因子:
select t.table_name,t.NUM_ROWS,t.BLOCKS,t.AVG_ROW_LEN,i.index_name,i.CLUSTERING_FACTOR
from dba_tables t,dba_indexes i
where t.table_name=i.table_name
and t.owner=SCOTT
and t.table_name=TEST3;
TABLE_NAME NUM_ROWS BLOCKS AVG_ROW_LEN INDEX_NAME CLUSTERING_FACTOR
---------- ---------- ---------- ----------- ---------- -----------------
TEST 14 1 32 TEST_ENAME 1
4、使用索引列进行查询:
SQL select * from test where ename=CUUG1;
no rows selected
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=32)
1 0 TABL
您可能关注的文档
- 机械制图(五)形位公差.ppt
- 机械制造的发展.ppt
- 机械制造过程_高速切削工艺.ppt
- 机械制造及自动化.doc
- 机修专业复习资料.doc
- 机原课设说明书样本(过控).doc
- 机载导航数据库课件.ppt
- 肌电信号的时域和频域分析及实现.doc
- 积分器和程序设计.doc
- 积分球光谱测量仪操使用说明书.doc
- DB13T 1209-2010饲料 复合预混料通则.docx
- 钢筋砼管顶管穿越建筑群施工的观测与分析.pdf
- DB13T 1334-2010 物流零担货运服务规范.docx
- DB13 T 1187.2-2010 称重类社会公正计量站服务规范 第2部分:电子轨道衡称重.docx
- DB13_T 1329-2010 韭菜病虫无公害防控技术规程.docx
- 立足技术创新 推行清洁生产 开创集团公司环境保护工作新局面——在集团公司清洁生产技术交流会上的总结报告.pdf
- 公司员工安全生产职责制度文档.pptx
- 厨房员工培训制度文档.pptx
- DB13╱T 1223-2010 化工产品的碘值测定方法.docx
- 逆作法在顶管施工井中的应用.pdf
文档评论(0)