pg_statistic
#該目錄表 pg_statistic
儲存了資料庫內容的統計資訊。這些條目由 ANALYZE
命令建立,並隨後被查詢規劃器使用。請注意,即使假設統計資料是最新的,所有統計資料本質上都是近似值。
通常,對於每個已分析的表列,都有一個 stainherit
= false
的條目。如果表有繼承的子表或分割槽,還會建立一個 stainherit
= true
的第二個條目。此行代表該列在繼承樹上的統計資訊,即 SELECT
所能看到的資料的統計資訊,而 column
FROM table
*stainherit
= false
的行代表 SELECT
的結果。column
FROM ONLY table
pg_statistic
還儲存了關於索引表示式值的統計資訊。這些被描述為實際資料列;特別是,starelid
引用索引。但是,對於普通的非表示式索引列,不會建立條目,因為這與底層表列的條目是冗餘的。目前,索引表示式的條目總是具有 stainherit
= false
。
由於不同種類的統計資料可能適用於不同種類的資料,pg_statistic
的設計並未對它儲存的統計資料的種類做太多假設。只有極其通用的統計資料(例如 NULL 值情況)在 pg_statistic
中有專門的列。其他所有內容都儲存在“槽”(slots)中,這些槽是相關列的組,其內容透過其中一個槽列中的程式碼編號進行標識。有關更多資訊,請參閱 src/include/catalog/pg_statistic.h
。
pg_statistic
不應該被公眾讀取,因為即使是關於表內容的統計資訊也可能被視為敏感資訊。(例如:工資列的最小值和最大值可能非常有趣。) pg_stats
是 pg_statistic
上一個可公開讀取的檢視,它僅顯示當前使用者可讀的表的資訊。
表 52.51. pg_statistic
列
列 型別 描述 |
---|
所描述列所屬的表或索引 |
所描述列的編號 |
如果為 true,則統計資訊包含子表的值,而不僅僅是指定關係中的值。 |
列中 NULL 條目的比例 |
非 NULL 條目的平均儲存寬度(位元組) |
列中不同非 NULL 資料值的數量。大於零的值是實際的不同值的數量。小於零的值是表中行數的負乘數;例如,一個值約 80% 為非 NULL 且平均每個非 NULL 值出現兩次的列可以用 |
一個程式碼編號,指示 |
用於推導第 |
用於推導第 |
第 |
第 |
如果您在文件中發現任何不正確之處、與您在使用特定功能時的實際經驗不符之處,或者需要進一步澄清之處,請使用 此表單 報告文件問題。