重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 359|回复: 0
打印 上一主题 下一主题

[Oracle] oracle数据库表统计信息

[复制链接]
跳转到指定楼层
楼主
发表于 2024-7-23 16:35:05 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 jiawang 于 2024-7-23 16:50 编辑

oracle数据库表统计信息未及时更新会导致oracle基于成本的执行计划可能不是最优,查看执行计划是没问题的,但sql实际执行起来确很慢。

查询oracle数据库表统计信息最后更新时间:

SELECT TABLE_NAME, LAST_ANALYZED,a.* FROM ALL_TAB_STATISTICS a WHERE A.OWNER = 'INFO';


更新oracle数据库表统计信息:

begin
  dbms_stats.gather_table_stats(ownname => 'info',
                                tabname => 'tproduct',
                                cascade => true,
                                degree  => 12);
end;

更新整个数据库的统计信息:

BEGIN
    DBMS_STATS.GATHER_DATABASE_STATS(
        Ownname        => NULL,
        Estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,
        Method_opt     => 'FOR ALL COLUMNS SIZE AUTO',
        Degree         => DBMS_STATS.DEFAULT_DEGREE,
        Cascade        => TRUE,
        Stats_level    => 'ALL');
END;
/

  • 更新特定用户所有对象的统计信息:

BEGIN
    DBMS_STATS.GATHER_SCHEMA_STATS(
        Ownname        => 'YOUR_SCHEMA_NAME',
        Estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,
        Method_opt     => 'FOR ALL COLUMNS SIZE AUTO',
        Degree         => DBMS_STATS.DEFAULT_DEGREE);
END;
/


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-11-24 22:26 , Processed in 0.108899 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表