データ基盤

BigQueryとは|使う項目を1個から3個に増やすだけで、読む量が3倍になった

読む量は何で決まるのか項目を1つ足すと何が増えるのか保管と計算はどう分かれるのか

20万行・12項目の表で、1項目だけを集計すると読む量は0.8MBでした。

3項目にすると2.3MBです。使う項目の数にそのまま比例します。

この記事の要点

  • 1項目で0.8MB
  • 3項目で2.3MB
  • 12項目で9.2MB
  • 比は12.0倍から1.0倍

使う項目を1個から3個に増やすだけで、読む量が3倍になった

読む量は使う項目の数にそのまま比例します。選ぶ項目を1つ足すと、その分だけ増えます。

BigQueryの並べ方は、公式に明記されています。BigQueryは、分析の問い合わせに向けて最適化された、列ごとの保管の形式を使ってデータを保管するという記述です。

列ごとに並んでいるので、使う項目だけを読めます。どれだけの差になるかを数えました。

使う項目の数を変える

text
表 200,000行・1行あたり 12項目(1項目 4バイト)
集計に使う項目の数を変えて、読む量を見る

使う項目  行ごとに持つ形  列ごとに持つ形  比
1個                   9.2MB           0.8MB   12.0倍
2個                   9.2MB           1.5MB    6.0倍
3個                   9.2MB           2.3MB    4.0倍
6個                   9.2MB           4.6MB    2.0倍
12個                  9.2MB           9.2MB    1.0倍

1項目なら0.8MB、3項目なら2.3MBです。項目の数にそのまま比例します。

読む量が費用に直結する形なら、選ぶ項目を1つ足すごとに費用が上がります

全項目を選ぶ場合

最下行が全項目です。9.2MBで、行ごとに持つ形と変わりません。

つまり全項目を選ぶ書き方は、この仕組みの利点をすべて打ち消します。1項目だけ見るつもりでも、全部を読みます。

12.0倍と1.0倍の差は、書き方1つで決まります。必要な項目を明示するかどうかだけです。

読む量は使う項目の数にそのまま比例する。

読む量(MB)集計に使う項目(個)→10.113.21項目2項目3項目6項目12項目20万行・12項目での計算。行ごとに持つ形はどの点でも9.2MBで一定になる。
図1 ── 使う項目の数と、読む量
出典Google Cloud ドキュメント「Introduction to BigQuery」2026-08-18 確認
BigQuery stores data using a columnar storage format that is optimized for analytical queries.
原文Google Cloud ドキュメント「Introduction to BigQuery」 この内容の有効期限2027-02-18

保管と計算が別々なので、片方だけ増やせる

置いておく量と、処理に使う力が別勘定になります。どちらが効いているかを分けて見られます。

BigQueryの構成は2つに分かれます。公式はBigQueryの構造は2つの部分からなる。データを取り込み、保管し、最適化する保管の層と、分析の能力を提供する計算の層であると述べています。

分かれているので、置いておく量を増やしても、処理の力はそのままにできます。

どちらが効いているか

  1. 置く量が多い。保管の層の話。読む量とは別
  2. 読む量が多い。前の節の項目数で決まる
  3. 処理が重い。並べ替えや突き合わせの分
  4. 問い合わせが多い。回数そのもの

1番目と2番目は別物です。10年ぶんを置いていても、直近1か月だけを読めば読む量は1か月ぶんです。

だから古いデータを消す判断と、読む量を減らす判断は別々になります。

力の増やし方

公式はBigQueryの拡張可能で分散した分析の機構により、数テラバイトを数秒で、数ペタバイトを数分で問い合わせられると述べています。

処理の力は増やせますが、読む量そのものは減りません。減らせるのは、選ぶ項目と絞る範囲だけです。

出典Google Cloud ドキュメント「Introduction to BigQuery」2026-08-18 確認
BigQuery's architecture consists of two parts: a storage layer that ingests, stores, and optimizes data and a compute layer that provides analytics capabilities.
原文Google Cloud ドキュメント「Introduction to BigQuery」 この内容の有効期限2027-02-18

速いことと、読む量が少ないことは別

数秒で返っても、読んだ量は変わりません。速さを見ていると、量が増えていることに気づけません。

BigQueryの速さは公式が示すとおりです。拡張可能で分散した分析の機構により、数テラバイトを数秒で、数ペタバイトを数分で問い合わせられるという記述です。

速いということは、読む量が多くても待たされないということでもあります。

気づけない理由

全項目を選ぶ書き方をしても、返ってくる時間はほとんど変わりません。前の計測でいえば、0.8MBが9.2MBになっても数秒のままです。

遅くならないので、直す動機が生まれません。読む量を別に見ていなければ、12倍のまま運用が続きます

同じ構図は、実行時間だけを見ていると気づけない場面で繰り返し出ます。1回ずつは速いのに回数が多い場合の話はMySQLの記事で扱いました。

見るべき数字

  1. 1回あたりの読む量。実行時間ではない
  2. その問い合わせが選んでいる項目の数。表の全項目と比べる
  3. 絞っている範囲。期間で区切れているか
  4. 実行の回数。読む量の合計はこれとの掛け算

1番目と4番目を掛けたものが効いてきます。1回0.8MBでも、1日1万回なら8GBです。

余談 この計測での注意

実在の仕組みは使わず、2つの並べ方をその場で作って読む量を計算しています。1項目4バイトという値も置いたもので、実際には項目の型によって違い、まとめて縮める処理も入るため、列ごとに持つ側はさらに小さくなります。ここで見せているのは、読む量が使う項目の数に比例し、全項目を選ぶとその利点が消えるという関係です。

出典Google Cloud ドキュメント「Introduction to BigQuery」2026-08-18 確認
BigQuery's scalable, distributed analysis engine lets you query terabytes in seconds and petabytes in minutes.
原文Google Cloud ドキュメント「Introduction to BigQuery」 この内容の有効期限2027-02-18

よくある質問

BigQueryの読む量は何で決まりますか
使う項目の数です。この計測では1項目で0.8MB、3項目で2.3MBと比例しました。
項目を1つ足すとどうなりますか
その項目ぶんが加わります。1項目から3項目で3倍になりました。
全項目を使うとどうなりますか
行ごとに持つ形と同じ9.2MBです。利点がなくなります。
保管と計算は分かれていますか
分かれています。取り込んで保管する層と、分析を担う層の2つで構成されると説明されています。

まとめ

  • 列ごとに並べて持つ
  • 読む量は項目の数に比例
  • 全項目を使うと利点が消える
  • 保管と計算は別の層

今日から始められること

  1. よく実行する集計が使う項目を数える
  2. 表の全項目数と比べて比を出す
  3. 全項目を取り出す問い合わせを探す
  4. その問い合わせが読む量を見積もる

実務で組んだBigQueryのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る