1. 程式人生 > >獲取oracle資料庫中表中記錄行數,不使用select count()方式

獲取oracle資料庫中表中記錄行數,不使用select count()方式

   逐個表統計資料行數,使用Select count語句統計,比較蠻煩,而且慢,可以使用如下語句直接使用者下的所有表的資料行數。
     select TABLE_NAME, T.num_rows, T.last_analyzed from tabs T
   但是,從tabs表中獲取的資料不是非常準確,在tabs表中存在一個欄位last_analyzed,有最後分析的日期,一般都不是最新,所以導致資料不是非常準確,可以通過在command下面執行
     EXECdbms_stats.gather_table_stats('【空間名稱】','【tablename】',cascade=>true);
   可以重新整理tabs表中的num_rows列,以及最後更新時間。

   1、單個表統計資料的統計資料更新
Connected to Oracle Database 10g Enterprise Edition Release10.2.0.4.0
Connected as oa_oa
 
SQL> EXECdbms_stats.gather_table_stats('CORDYS','TASK_LIST_WAIT',cascade=>true);
PL/SQL procedure successfully completed

   2、更新整個使用者所有表的統計資料更新

SQL> EXECdbms_stats.gather_schema_stats('【username】',estimate_percent=>100,cascade=>TRUE);

   執行完畢之後,發現last_analyzed變成了剛才執行 dbms_stats時間,統計資料也更新了,大都準確。

   但是,還是有問題,起因是分割槽表,處理方法再研究......