メインコンテンツへスキップ

問題

a['key'] のような Map のルックアップは線形計算量で動作するため (こちらで説明しています) 、非効率になる場合があります。これは、テーブルから特定のキーに対応する値を選択するには、Map カラム内の全行 (N) にわたってすべてのキー (約 M) を走査する必要があり、結果として約 MxN 回のルックアップが発生するためです。 Map を使ったルックアップは、String カラムに比べて 10 倍遅くなることがあります。以下の実験でも、コールドクエリで約 10 倍の速度低下が見られるほか、処理されるデータ量にも桁違いの差 (7.21 MB 対 5.65 GB) があることが示されています。
解決策 クエリを改善するには、Mapカラム内の特定のキーの値を既定値とする別のカラムを追加し、それをマテリアライズして既存の行にも値を設定できます。こうすることで、必要な値を挿入時に抽出して保存できるため、クエリ時のルックアップを高速化できます。
最終更新日 2026年7月2日