我对以下不匹配感到困惑。
Select table_name, Num_Rows
from all_tables
where OWNER = 'OWNER_NAME' and table_name='TABLE_NAME1';
给我401
的结果。
select count(*) from TABLE_NAME1
给了我一个200
的计数。当试用TABLE_NAME2
时,两者都返回相同的值
这里发生了什么?
答案 0 :(得分:5)
ALL_TABLES.NUM_ROWS
(或USER_TABLES.NUM_ROWS
)中的值只是analyze table ...
或dbms_stats.gather_table_stats
程序生成的统计信息。这不准确,不是实时信息。
Oracle优化器使用这些统计值来计算SQL语句的成本并选择执行计划。