在 DB2 數據庫管理中,了解表統計信息(Runstats)的最後更新時間對於性能調優至關重要。如果不確定某張表是否執行過 RUNSTATS,或是想確認最後一次執行的具體時間,可以通過查詢系統視圖 SYSCAT.TABLES 來快速獲取這項資訊。
SYSCAT.TABLES 視圖中的 STATS_TIME 欄位記錄了該表統計信息最後一次發生變更的時間戳。若該表從未執行過 RUNSTATS,此欄位將顯示 NULL,同時其他相關統計欄位(如 NPAGES)的值會為 -1。
以下步驟示範如何查詢 EMPLOYEE 表的統計更新時間:
db2 "connect to sample"
db2 "select stats_time, substr(tabname,1,20) as tabname from syscat.tables where tabname='EMPLOYEE'"
查詢結果示例:
STATS_TIME TABNAME
------------------------- --------------------
2007-04-23-14.11.42.828000 EMPLOYEE
由此可知,EMPLOYEE 表的統計信息最後更新於 2007-04-23 14:11:42。若 STATS_TIME 為 NULL,則表示該表從未收集過統計信息,建議盡快執行 RUNSTATS 以確保優化器擁有最新的數據分佈資訊,生成最優訪問計劃。

掌握這項查詢技巧,能幫助 DBA 及時發現統計信息缺失或過期的表,進而制定合理的統計維護策略,保障 SQL 查詢性能穩定。