diff --git a/doc/src/sgml/planstats.sgml b/doc/src/sgml/planstats.sgml index d18e37597d1..68ee367f351 100644 --- a/doc/src/sgml/planstats.sgml +++ b/doc/src/sgml/planstats.sgml @@ -54,11 +54,7 @@ while producing statistics, the results will change slightly after any new ANALYZE. --> -《マッチ度[55.755396]》以下の例はPostgreSQLリグレッションテストデータベース内のテーブルを使用します。 -表示される出力はバージョン8.3で取得しました。 -以前の(または以降の)バージョンとは動作が変わっているかもしれません。 -また、ANALYZEは統計情報を生成する時にランダムなサンプリングを行いますので、結果はANALYZEを新しく行った後に多少変わることに注意してください。 -《機械翻訳》以下の例はPostgreSQLリグレッションテストデータベースのテーブルを使用しています。 +以下の例はPostgreSQLリグレッションテストデータベースのテーブルを使用しています。 また、ANALYZEは統計を生成する際にランダムサンプリングを使用するため、新しいANALYZEを実行した後は結果がわずかに変化することに注意してください。 @@ -82,7 +78,7 @@ EXPLAIN SELECT * FROM tenk1; completeness. The number of pages and rows is looked up in pg_class: --> -プランナがどのようにtenk1の濃度を決定するかについてはで説明しました。 +プランナがどのようにtenk1のカーディナリティを決定するかについてはで説明しました。 しかし、ここでは完全を期するために説明を繰り返します。 ページ数および行数はpg_classから検索されます。 @@ -185,7 +181,7 @@ selectivity = (1 + (1000 - bucket[2].min)/(bucket[2].max - bucket[2].min))/num_b tenk1: --> つまり、1つのバケット全体に、2番目のバケットとの線形比率を加えたものを、バケット数で割ったものとなります。 -ここで、行の推定値は、選択度とtenk1の濃度を掛け合わせたものとして計算されます。 +ここで、行の推定値は、選択度とtenk1のカーディナリティを掛け合わせたものとして計算されます。 rows = rel_cardinality * selectivity @@ -255,7 +251,7 @@ selectivity = mcf[3] As before, the estimated number of rows is just the product of this with the cardinality of tenk1: --> -前と同様、推定される行数は単に前回同様、この値とtenk1の濃度との積です。 +前と同様、推定される行数は単に前回同様、この値とtenk1のカーディナリティとの積です。 rows = 10000 * 0.003 @@ -560,10 +556,8 @@ tablename | null_frac | n_distinct | most_common_vals count estimates for both relations (num_rows, not shown, but "tenk") together with the column null fractions (zero for both): --> -《マッチ度[62.269939]》今回の場合、すべての値が一意であるため、unique2に関するMCV情報がありません。 -ですので、両リレーションの個別値数とNULL値の部分のみに依存したアルゴリズムを使用することができます。 -《機械翻訳》この場合、unique2に対するMCV情報は存在せず、すべての値は一意であるように見えます(n_distinct = -1)。 -そこで、両方の関係(num_rows、図示せず、ただし"tenk")に対する行数の推定値と列のNULL部分(両方ともゼロ)を使用するアルゴリズムを使用します。 +この場合、unique2に関するMCVの情報はなく、すべての値が一意であるように見えます(n_distinct = -1)。 +そのため、両方のリレーションの行数推定値((ここでは表示されていませんが"tenk"の)num_rows)と、列のNULL率(両方ともゼロ)に基づいたアルゴリズムが使用されます。 selectivity = (1 - null_frac1) * (1 - null_frac2) / max(num_rows1, num_rows2) @@ -580,10 +574,8 @@ selectivity = (1 - null_frac1) * (1 - null_frac2) / max(num_rows1, num_rows2) Cartesian product of the two inputs, multiplied by the selectivity: --> -《マッチ度[76.946108]》これは、各リレーションにおいて、1からNULL部分を差し引き、個別値数の最大値で割った値です。 -この結合が生成するはずの行数は、2つの入力のデカルト積の濃度に、この選択度を掛けたものとして計算されます。 -《機械翻訳》これは、各リレーションに対してNULL分数を1から減算し、より大きなリレーションの行カウントで割った値です(この値は、一意でない場合にスケーリングされます)。 -結合が発行する可能性のある行数は、2つの入力の直積のカーディナリティに選択性を掛けたものとして計算されます。 +これは、各リレーションにおいて、1からNULL部分を差し引き、それを大きい方のリレーションの行数で割ります(この値は一意でない場合にはスケーリングされます)。 +この結合が生成するはずの行数は、2つの入力のデカルト積のカーディナリティに、この選択度を掛けたものとして計算されます。 rows = (outer_cardinality * inner_cardinality) * selectivity @@ -681,7 +673,7 @@ ANALYZE t; cardinality of t using the number of pages and rows obtained from pg_class: --> -で説明されているように、pg_classから得られるページ数と行数を使って、tの濃度を決定できます。 +で説明されているように、pg_classから得られるページ数と行数を使って、tのカーディナリティを決定できます。 SELECT relpages, reltuples FROM pg_class WHERE relname = 't'; @@ -787,7 +779,7 @@ EXPLAIN (ANALYZE, TIMING OFF) SELECT * FROM t WHERE a = 1 AND b = 1; estimated number of rows returned by the HashAggregate node) is very accurate: --> -GROUP BY句が生成するグループ数のような、複数列の集合の濃度の見積もりについても、同様の問題が起きます。 +GROUP BY句が生成するグループ数のような、複数列の集合のカーディナリティの見積もりについても、同様の問題が起きます。 GROUP BYの対象が単一の列なら、N個別値の推定(HashAggregateノードが返す推定行数で示されます)はとても正確です。 EXPLAIN (ANALYZE, TIMING OFF) SELECT COUNT(*) FROM t GROUP BY a;