カーディナリティ推定
プランナーが「各ステップで何行出てくるか」を見積もる処理。実行計画のすべてがこの数値に左右されるため、オプティマイザで最も重要な数字である。
結合順序、結合方式、インデックスの選択はいずれも推定行数に基づく。誤差は結合ツリーを上るにつれて掛け算で膨らみ、底で10倍ずれれば頂点では1000倍になりうる。その結果、ネステッドループなら数ミリ秒で済むところにハッシュ結合が選ばれる。誤差の主因は、郵便番号と市区町村、商品とカテゴリのように相関する列をプランナーが独立とみなすこと、見通せない式、更新されていない統計情報である。PostgreSQL での対策は、列の組み合わせに対する CREATE STATISTICS と、偏った列の統計ターゲットの引き上げだ。