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」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
すべてのレベルが、プラチナ以上のプランで遊べます。