背景
毎回ほぼ全テーブルの特定のカラムに対してwhereで区切った上で使用する。
同僚からとても良い方法を教えて貰ったので紹介する。
特定のカラムにwhereで区切っていたの所をクラスタ化すると良いらしい。

よく使う条件での検索や集計が速くなる(クラスタ列での絞り込みが多いほど効果的)。 データ量が多いテーブルほど効果が高い(おすすめは64MB以上のテーブル)。 クエリの料金や実行時間が下がる可能性がある。
試してみた
dbtを使っているのでdbt側で指定した
{{
config(
materialized="table",
cluster_by="column_name",
)
}}
結果
| 条件 | バイト数 |
|---|---|
| where句なし | 1.18 GB |
| column_nameで絞る | 175 MB |
普段の1/10ぐらいのスキャン料で済みそう。これは最高だ。 もっとデータ量が多くなればパーティショニングなども使えば良いが現状だとクラスタリングで十分そう。