HN🔥 28
💬 3

Postgres 19に期待!ついに「クエリヒント」が実装されるかも?

jjgreen
4日前

ディスカッション (4件)

0
jjgreenOP
👍284日前

次期PostgreSQL 19に向けて、以前から多くのエンジニアが熱望していた「クエリヒント」機能の実装に対する期待が高まっています。オプティマイザの挙動を直接制御できるようになれば、複雑なクエリのパフォーマンスチューニングが劇的に楽になるかもしれません。今後のコミュニティの動向に注目です。

1
crimsonnoodle58
約15時間前

インデックススキャンを強制するために enable_seqscan をオフにしたことが何度あるだろうか?あるいは、プランナによるフラット化を防ぐためにサブクエリに OFFSET 0 を入れたりとか。

うちは enable_nestloop = off だな。

複雑なビューを大量にJOINするとプランナがすぐ混乱するから、今回の件は本当に嬉しいよ。

アップグレードで壊れるからね。

皮肉なことにプランナも同じなんだよね。古いPostgreSQLでは完璧に動いていたクエリが、新しいバージョンで突然暴走するのを何度も見てきた。だからヒント句を使うほうが、結果的に安定性は高まるはず。

2
robertlagrant
約15時間前

データベースのヒント句については詳しくないけど、構文はすごく読みやすくて組み合わせやすそうに見えるね。そこをしっかり仕上げてきたのは素晴らしい。

3
lfittl
約14時間前

pg_plan_advice の作者である Robert Haas による、動機や設計についての元記事も一読の価値あり: https://rhaas.blogspot.com/2026/03/pgplanadvice-plan-stabili... (https://rhaas.blogspot.com/2026/03/pgplanadvice-plan-stability-and-user.html)

あと、自分の視点も補足すると、「EXPLAIN (PLAN_ADVICE)」こそが、これが単なる「ヒント機能」ではなく「プランの安定化機能」であるための鍵だと思う。pg_plan_advice が提供する拡張性やフレームワークは土台であり、行数やJOINの見積もり調整といった初期リリースではカバーしきれていない部分があったとしても、いずれは長年言われてきた「Postgresにはヒント句がない」という問題を解決してくれるはず。

拡張性の例を挙げると、話を聞いた人の中には「なぜコメント形式のヒントじゃないのか」と言う人がいる。今回のリリースでPostgresがその方式を採用しなかった理由はあるんだけど(現状のコアにはコメント解析機能がないし、関数などでコメントが正しく機能しないケースがあるなど)、コメントをパースしてアドバイザーフックを設定するような拡張機能を作るのは簡単だよ: https://github.com/pganalyze/pg_advice_comment (https://github.com/pganalyze/pg_advice_comment)