pg_clickhouse v0.10、サブクエリのプッシュダウンでTPC-Hクエリが最大1000倍高速化

pg_clickhouse v0.10: Subquery pushdown and 1000x faster TPC-H queries

pg_clickhouse v0.10、サブクエリのプッシュダウンでTPC-Hクエリが最大1000倍高速化

pg_clickhouse v0.10.0がリリースされ、TPC-Hベンチマークの22クエリ中16クエリを完全にプッシュダウンできるようになりました。相関サブクエリをClickHouse側で処理することで、Q17は32.7秒から37ミリ秒に短縮。また、Cクライアントライブラリへの移行、関数・集計のプッシュダウン範囲拡大、NULL処理の修正なども行われています。

完全にプッシュダウンされたQ17は、37ミリ秒で実行されます。これは3桁の違いであり、pg_clickhouseがネイティブのPostgreSQLの同じクエリのプラン(2.1秒)を上回る明確なケースを示しています。
  1. nasretdinov

    条件プッシュダウンや、ある言語から別の言語へのトランスパイルのようなことを試したことがある者として、これは本当に素晴らしい。元のデータベースのセマンティクスを保ちながらサブクエリを正しくプッシュダウンすることは、私には達成できなかったであろうことだ。

  2. manjose2018

    pg_clickhouse を pgrust と比較することを検討してください。

    https://malisper.me/how-we-made-postgres-hundreds-of-times-f...

  3. manbash

    > 12月の目玉機能は、プランナーが相関EXISTSサブクエリ全体をネストループではなく単一のLEFT SEMI JOINとしてプッシュダウンすることを教えたことで、外側の行ごとにClickHouseへのラウンドトリップが1回発生するのをなくしました。これにより、22のTPC-Hクエリのうち3つから12へと進みました。

    LLMは「針を動かす」といった古風な表現を使うのが本当に好きですね。専門用語の急な対比がとても不快で、読んでいる最中に何度も気が散ってしまいます。

この日のほかの記事

2026-08-11