前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DB笔试面试630】在Oracle中,怎样收集表的统计信息?怎样收集分区表的统计信息?

【DB笔试面试630】在Oracle中,怎样收集表的统计信息?怎样收集分区表的统计信息?

作者头像
小麦苗DBA宝典
发布2019-09-29 16:21:32
9510
发布2019-09-29 16:21:32
举报

题目部分

在Oracle中,怎样收集表的统计信息?怎样收集分区表的统计信息?

答案部分

主要采用DBMS_STATS.GATHER_TABLE_STATS包进行统计信息的收集,如下所示:

代码语言:javascript
复制
DBMS_STATS.GATHER_TABLE_STATS(USER,'TB_NAME',CASCADE=>TRUE);--普通表
DBMS_STATS.GATHER_TABLE_STATS(USER,'TB_NAME',PARTNAME=>'PT_PART_NAME',GRANULARITY=>'PARTITION',CASCADE=>TRUE);--针对分区表的单个分区进行收集统计信息

除此之外,还有一些其它的用法,如下所示:

l EXEC DBMS_STATS.GATHER_DATABASE_STATS();--收集当前数据库下所有用户的统计信息

l EXEC DBMS_STATS.GATHER_SCHEMA_STATS(USER);--收集用户下所有对象的统计信息

当系统的分区表数据量很大时,如果每次都收集全部的分区必然会导致统计信息的收集非常慢,在Oracle 11g之后可以通过设置INCREMENTAL来只针对数据有变动的分区做收集:

代码语言:javascript
复制
EXEC DBMS_STATS.SET_TABLE_PREFS(USER,'TABLE_NAME','INCREMENTAL','TRUE');--只收集数据变动的分区
SELECT DBMS_STATS.GET_PREFS('INCREMENTAL',NULL,'TABLE_NAME') FROM DUAL;--查看分区表INCREMENTAL的值

本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档