CBO学习---第2章--表扫描(Tablescans)(十)
=ALL_ROWS (Cost=30 Card=18 Bytes=144)
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'T1' (Cost=30 Card=18 Bytes=144)
2 1 SORT (ORDER BY)
3 2 INDEX (FAST FULL SCAN) OF 'T1_I' (INDEX) (Cost=12 Card=18)
DBA的一项工作,就是定期重建索引,就是因为叶块数目远小于HWM
/**************************************************************************************************************************************/
2.6 分区
本章代码附件中:
[sql]
partition.sql
partition_2.sql
partition_8.sql
partition.sql构建一个多分区的大表,并收集统计信息;设计了三个查询:query1扫描单个分区、query2扫描两个相邻分区、query3绑定变量=query2
注意:autotrace在10.2之后,才能够看出所查的分区信息,所以该脚本所用的是table(dbms_xplan.display)
根据前面列出的系统表信息,可以在优化器中估算出返回的行数,具体计算结果如下:
query1:
[sql]
120000*(350-250)/199+120000*2/200=61502
--120000为该分区总函数
--199为199个不同的值
query2:
query3:
[sql]
2500=1000000*0.25%
有时绑定变量,使优化器不能很好的明确路径,就在于此
/**************************************************************************************************************************************/
[sql]
alter table pt1
exchange partition p0999 with table load_table
including indexes
without validation
;
将表以上面方式装载入分区表中,不会产生表级的统计信息