以下两个查询(作为DBA执行)会产生两个不同的行数。
select table_name, num_rows from all_tables where owner = 'JIRA' and table_name = 'JIRAISSUE';
select count(*) from JIRA.JIRAISSUE;
我知道第二个查询返回正确的值。
提前致谢。
答案 0 :(得分:4)
NUM_ROWS列只是 估算值 ,在更新表的统计信息时(仅)更新。
即使 DBMS_STATS.GATHER_TABLE_STATS()
之后值不也会反映正确的行数(可能,但不能保证,因为它只是一个估计)
答案 1 :(得分:1)
如果您希望all_tables
返回准确的计数,则必须按照以下方式进行分析:
analyze table JIRAISSUE compute statistics
这样,当你运行上面的语句时,它将返回正确的结果。但是,在下次插入时,在重新分析之前它将是不正确的。
答案 2 :(得分:0)
如果不运行分析仪,下面的查询会给出正确的结果:
select
table_name,
to_number(
extractvalue(
xmltype(
dbms_xmlgen.getxml('select count(*) c from '||table_name))
,'/ROWSET/ROW/C')) row_count
from ALL_TABLES ;