我需要在表格中获取总数没有记录的分页目的..它有大约100万条记录...计数是作为页面加载的一部分计算的...我可以做计数查询但是它需要很少更多的时间,因此增加页面加载的时间。所以,以避免我已经使用
select ROW_NUMS,OWNER from ALL_TABLES where table_name='table1'
但问题是,对某些表的查询会将结果显示为零,有时计数也不正确(与计数查询不同)
知道如何更新表的all_tables数据以及如何更新all_table
答案 0 :(得分:1)
如果您想要表中的确切记录数,则需要select count(*)
。这个结果是正确的。 NUM_ROWS
从未提供确切的行数。
你可以收集表格,但这会给你估计数。
exec dbms_stats.gather_table_stats('<OWNER>', '<TABLE_NAME>');
答案 1 :(得分:0)
要获得准确的行数,您可以让数据库在将数据发送到客户端之前进行繁重的工作,例如:
SELECT t.*
,COUNT(*) OVER () AS row_count
FROM my_table t;
答案 2 :(得分:-1)
您需要运行ANALYZE语句才能正确更新该列