DM查询优化-统计信息

对象统计信息描述数据是如何在数据库中存储的。统计信息是优化器的代价计算的依据,可以帮助优化器较精确地估算成本,对执行计划的选择起着至关重要的作用。

统计信息收集
1.收集表的统计信息
call dbms_stats.gather_table_stats(OWNNAME='TEST',TABNAME='student',DEGREE=3,ESTIMATE_PERCENT=50);
2.收集索引的统计信息
call dbms_stats.gather_index_stats(OWNNAME='TEST',INDNAME='I_ID',DEGREE=3,ESTIMATE_PERCENT=50);
3.收集模式下对象的统计信息
call dbms_stats.gather_schema_stats(OWNNAME='TEST',DEGREE=3,ESTIMATE_PERCENT=50);

统计信息查看
1.查看表的统计信息
call dbms_stats.table_stats_show(OWNNAME='TEST',TABNAME='student');
2.查看索引的统计信息
call dbms_stats.index_stats_show(OWNNAME='TEST',INDEXNAME='I_ID');
3.查看列统计信息
call dbms_stats.column_stats_show(OWNNAME='TEST',TABNAME='student',COLNAME='name');

统计信息更新
1.更新已有的统计信息
call dbms_stats. update_all_stats();

统计信息删除
1.删除列的统计信息
call dbms_stats.delete_column_stats(OWNNAME='TEST',TABNAME='student',COLNAME='name');
2.删除与表统计的相关对象的信息
call dbms_stats.delete_table_stats(OWNNAME='TEST',TABNAME='student');
3.删除模式下的对象统计信息
 call dbms_stats.delete_schema_stats(OWNNAME='TEST');

select * from "v$dm_ini" where "para_name" like 'SEl%';
可以看到没有统计信息,对于列名='常量',选择率固定为SEL_RATE_EQU,值为2.5% (可通过执行计划的SLCT2操作符的结果集看出,该结果集为总数据数*0.025)
其他谓词一律为SEL_RATE_SINGLE, 缺省为5%(比喻>、<等)
更新表统计信息后:
该结果集明显变少

或者使用下面的语句

SP_CREATE_SYSTEM_PACKAGES (1,'DBMS_STATS');  --如果还未创建过系统包。请先调用系统过程创建系统包
      dbms_stats.table_stats_show('SYSDBA','CF');  --查看表sysdba.cf的统计信息
      dbms_stats.column_stats_show('SYSDBA','CF','FDMCHXM'); --查看表某列的统计信息
      dbms_stats.index_stats_show('SYSDBA','I_CF_FDMCHXM');  --查看模式下索引的统计信息

      call sp_db_stat_init(); --库级别的统计信息收集(包括所有用户、模式的表及表上索引的信息)
      call sp_tab_index_stat_init('SYSDBA','CF');--收集CF表下的所有索引的统计信息,上面新建索引没有收集统计信息时不走索引,收集完该索引或者该索引的列后,就走索引了
      call sp_col_stat_init('SYSDBA','CF','FDMCHXM');--收集表中某一列的统计信息
      call sp_tab_col_stat_init('SYSDBA','CF');--收集某张表上所有列的统计信息

      call sp_stat_on_table_cols('SYSDBA','CF',90);--收集某张表上所有列的统计信息,并指定采样率,采样率范围0-100
      call sp_tab_stat_init('SYSDBA','CF'); --收集指定的表的统计信息
      call sp_index_stat_init('SYSDBA','I_CF_FDMCHXM'); --收集指定的索引的统计信息

      call sp_index_stat_deinit('SYSDBA','I_CF_FDMCHXM'); --删除模式下指定的索引统计信息
      call sp_col_stat_deinit('SYSDBA','CF','FDMCHXM'); --删除指定列的统计信息
      call sp_tab_col_stat_deinit('SYSDBA','CF'); --删除指定表上所有的统计信息
      call sp_tab_stat_deinit('SYSDBA','CF'); --删除指定表的统计信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值