你還在苦思冥想怎樣快速統計一張裝有大量數據的表的總記錄數嗎?
你還在用select count(*) from table_name 嗎?
可以來試試我的新發現:
如果想統計一張上千萬或上億的數據量的時候直接count(*)是非常耗時的,幾千萬的數據估計都要等上好幾分鍾。
快速查詢表的總記錄數:
select table_name, t.num_rows, t.last_analyzed from tabs t;
這里能查出數據庫中此用戶的所有表中的記錄數。
經過查詢資料發現,從tabs表中獲取的數據不是非常准確,在tabs表中存在一個字段last_analyzed,有最后分析的日期,
好像都不是最新,可能導致數據不是非常准確。
可以通過在command下面執行
EXEC dbms_stats.gather_table_stats('【空間名稱】','【tablename】',cascade=>true);
可以刷新tabs表中的num_rows列,以及最后更新時間
使用ANALYZE命令或執行DBMS_STATS 程序包中過程能夠收集統計量,在DBA_TABLES中能查詢到統計信息
analyze table table_name compute statistics;
exec dbms_stats.gather_table_stats('SCHEMA','TABLE_NAME');
select * from user_tables where table_name='TABLE_NAME';
LAST_ANALYZE指的是最近一次的統計時間了
