?
このドキュメントでは、 php中國(guó)語(yǔ)ネットマニュアル リリース
pg_statistic表存儲(chǔ)有關(guān)該數(shù)據(jù)庫(kù)內(nèi)容的統(tǒng)計(jì)數(shù)據(jù)。記錄是由ANALYZE創(chuàng)建的, 并且隨后查詢規(guī)劃器使用。請(qǐng)注意所有統(tǒng)計(jì)信息本質(zhì)上都是近似的數(shù)值,即使假設(shè)它是最新的。
通常有一個(gè)條目,stainherit = false,為每個(gè)已分析的表列。如果表中有子繼承,第二項(xiàng)由stainherit = true創(chuàng)建。 此行代表關(guān)于繼承樹的列統(tǒng)計(jì),即你看到用SELECT column FROM table*的統(tǒng)計(jì)數(shù)據(jù), 而stainherit = false行,表示SELECT column FROM ONLY table 的結(jié)果。
pg_statistic還存儲(chǔ)有關(guān)索引表達(dá)式數(shù)值的統(tǒng)計(jì)數(shù)據(jù)。這些是把它們當(dāng)作實(shí)際的數(shù)據(jù)字段來(lái)描述的; 特別是,starelid引用索引。不過(guò),普通的非表達(dá)式字段沒(méi)有記錄,因?yàn)闀?huì)和下層的表字段記錄冗余。 目前,索引表達(dá)式的記錄總是有stainherit = false。
因?yàn)椴煌愋偷慕y(tǒng)計(jì)信息適用于不同類型的數(shù)據(jù),pg_statistic設(shè)計(jì)成不太在意 自己存儲(chǔ)的是什么類型的統(tǒng)計(jì)。只有極為常用的統(tǒng)計(jì)信息(比如NULL)才 在pg_statistic里給予專用的字段。其它所有東西都存儲(chǔ)在"槽位"中, 而槽位是一組相關(guān)的字段,它們的內(nèi)容用槽位中的一個(gè)字段的編碼號(hào)表示。 更詳細(xì)的信息請(qǐng)參閱src/include/catalog/pg_statistic.h。
pg_statistic不應(yīng)該是公開可讀的,因?yàn)榧词故潜韮?nèi)容的統(tǒng)計(jì)信息也應(yīng)該認(rèn)為 是敏感的。例如:薪水字段的最大最小值肯定是相當(dāng)讓人感興趣的。 pg_stats是一 個(gè)在pg_statistic上的全局可讀的視圖, 它只顯示那些表對(duì)于當(dāng)前用戶可讀的信息。
Table 45-36. pg_statistic Columns
名稱 | 類型 | 引用 | 描述 |
---|---|---|---|
starelid | oid | pg_class.oid | 所描述的字段所屬的表或索引 |
staattnum | int2 | pg_attribute.attnum | 所描述的字段數(shù) |
stainherit | bool | ? | 如果為真,統(tǒng)計(jì)包括繼承子列,而不僅是 指定關(guān)系值 |
stanullfrac | float4 | ? | 該字段中為NULL記錄的比率 |
stawidth | int4 | ? | 非NULL記錄的平均存儲(chǔ)寬度,以字節(jié)計(jì) |
stadistinct | float4 | ? | 字段里不同的非NULL數(shù)據(jù)值數(shù)。一個(gè)大于零的數(shù)值是不同值的實(shí)際數(shù)。 一個(gè)小于零的數(shù)值是表中行數(shù)的分?jǐn)?shù)的負(fù)數(shù)(比如,一個(gè)字段的數(shù)值平均出現(xiàn)概率為兩次, 那么可以表示為stadistinct = -0.5)。零值表示不同數(shù)值的數(shù)量是未知的。 |
stakindN | int2 | ? | 一個(gè)編碼,表示這種類型的統(tǒng)計(jì)存儲(chǔ)在pg_statistic行的第N個(gè)"槽位"。 |
staopN | oid | pg_operator.oid | 一個(gè)用于生成這些存儲(chǔ)在第N個(gè)"槽位"的統(tǒng)計(jì)信息的操作符。 比如,一個(gè)柱面圖槽位會(huì)顯示<操作符,該操作符定義了該數(shù)據(jù)的排序順序。 |
stanumbersN | float4[] | ? | 第N個(gè)"槽位"的相關(guān)類型的數(shù)值類型統(tǒng)計(jì),如果該槽位和數(shù)值類型沒(méi)有關(guān)系,那么就是NULL |
stavaluesN | anyarray | ? | 第N個(gè)"槽位"相關(guān)類型的字段數(shù)據(jù)值,如果該槽位類型不存儲(chǔ)任何數(shù)據(jù) 值那么就是 NULL 。每個(gè)數(shù)組的元素值實(shí)際上都是指定字段的數(shù)據(jù)類型, 因此,除了把這些字段的類型定義成anyarray。之外,沒(méi)有更好的辦法。 |