CREATE STATISTICS(拡張統計)の使い方

関わり合う列の統計

書き方

CREATE STATISTICS 名前 (dependencies) ON 列1, 列2 FROM 表;
CREATE STATISTICS 名前 (ndistinct, mcv) ON 列1, 列2 FROM 表;
ANALYZE 表;
SELECT statistics_name, attnames, dependencies FROM pg_stats_ext WHERE tablename = '表';

プランナーは、ふつう列どうしは関係が無いと考えて、条件の割合をかけ算します。郵便番号が決まれば市も決まるような列では、見積もり(rows)が小さくなりすぎ、Nested Loop を選んでしまいます。CREATE STATISTICS で列の組を教え、ANALYZE すると、関わり(dependencies)・組の種類の数(ndistinct)・よくある組(mcv)を集めて、見積もりが合います。作っただけでは空で、ANALYZE で中身が入ります。

例

CREATE STATISTICS patients_city_zip (dependencies) ON city, zip FROM patients;
ANALYZE patients;

実際に打って練習する

障害対応(PostgreSQL)コースの Lv41「関わり合う列 CREATE STATISTICS」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

すべてのレベルが、プラチナ以上のプランで遊べます。

PostgreSQL の障害対応で使う構文一覧へ戻る