• 关于Oracle 数据库使用dba_tables或者all_tables或者user_tables统计数据时,与直接查询表统计时数据不一致的记录


    1. 今天写代码发现这个问题,这里记录一下, 不一致的原因是因为  dba_tables 、all_tables、user_tables 不是实时的反应表的数据的,所以需要在查询统计之前对表进行手动分析,步骤如下

    第一步:

      

    create or replace function count_rows(table_name in varchar2,owner in varchar2 default null)
    return number authid current_user IS
    num_rows number;
    stmt varchar2(2000);
    begin
    if owner is null then
    stmt := 'select count(*) from "' || table_name || '"';
    else
    stmt := 'select count(*) from "' || owner || '"."' || table_name || '"';
    end if;
    execute immediate stmt
    into num_rows;
    return num_rows;
    end;

    第二步:

       analyze table 表名 compute statistics; // 如果有多个表,那么就要把此语音复制为多个,修改一下表名执行一下。 

    这就可以了。

  • 相关阅读:
    装备购买 线性基+贪心
    花园 状压DP+矩阵快速幂
    数学作业 递推+矩阵快速幂
    石头游戏 构造+矩阵快速幂
    sumdiv 算术基本定理的推论
    huffman
    Integer 类型比较大小
    java 中的 String 相加
    Java 中的 static 关键字
    JAVA 基础
  • 原文地址:https://www.cnblogs.com/qiaoyutao/p/11115325.html
Copyright © 2020-2023  润新知