oracle 加 统计信息,oracle中获得统计信息的方法

oracle的CBO是通过统计信息来解析出执行计划的,而对于一个新建立的数据库来说,因为没有执行过获取统计信息的程序,所以统计信息经常是错误的,这就需要我们经常手动收集统计信息,下面列一下几个简单的收集统计信息的方法:

----得到一个表的统计信息(可以不加size skewonly,但速度会慢一些)

DBMS_STATS.GATHER_TABLE_STATS(ownname => 'OWNER_NAME',tabname => 'TABLE_NAME',method_opt => 'for all indexed columns size skewonly');--直方图统计所有索引列

DBMS_STATS.GATHER_TABLE_STATS(ownname => 'OWNER_NAME',tabname => 'TABLE_NAME',method_opt => 'for all columns size skewonly');--直方图统计所有列

DBMS_STATS.GATHER_TABLE_STATS(ownname => 'OWNER_NAME',tabname => 'TABLE_NAME',method_opt => 'for all indexes');--只分析相关索引

----更新数据库的内存,使数据库中已经形成的所有解释计划失效

alter system flush shared_pool;

----单独使一个表已经存在的解释计划失效的方法(只要运行一个赋权语句,DDL语句也可以,对系统没有影响的DDL语句就是赋权语句)

grant select on owner_name.table_name to owner_name;

revoke select on owner_name.table_name from owner_name;

----对整个数据库进行统计

DBMS_STATS.GATHER_DATABASE_STATISTICS

----对一个用户进行统计

DBMS_STATS.GATHER_SCHEMA_STATISTICS(ownname => 'OWNER_NAME');

----对一个索引进行统计

DBMS_STATS.GATHER_INDEX_STATISTICS(ownname => 'OWNER_NAME',indname => 'INDEX_NAME');

----删除一个表的统计信息

DBMS_STATS.DELETE_TABLE_STATS(ownname => 'OWNER_NAME',tabname => 'TABLE_NAME');[@more@]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值