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

カンタン補助金のD1コスト、月45ドルから0円に下がるまで

自社プロダクト「カンタン補助金」のD1データベースで、索引を2本追加しただけで月45ドルの請求が0円になった。何を測り、何を直したかを記録する。

これはCloudflare上でAI関連プロダクトを運用する記録シリーズの1本である。自社プロダクト「カンタン補助金」は2026年9月にインフラをCloudflareへ全面移行した(Worker・Pages・D1・R2・Workflowsの構成)。移行後にD1データベースの利用料が想定を超えて発生した経緯と、索引の追加だけで請求が0円に戻った記録をまとめる。

この記事で分かること

  • D1の請求がどのような形で発生したか
  • 索引を2本追加しただけで請求が0円になった理由
  • D1の課金の仕組みを公式ドキュメントでどう裏付けたか

この記事で分からないこと(正直に書く)

  • 月45ドルの内訳(どのクエリが何回呼ばれて積み上がったか)の詳細
  • 他のテーブルに同様の未索引クエリが残っていないかの全数調査結果

全面移行でD1に載せた

2026年9月、カンタン補助金はそれまでのサーバー構成からCloudflareのWorker・Pages・D1・R2・Workflowsへ全面移行した(出所: 自社の運用記録、確認日2026-09-06)。データベースが置き換わり、検索・一覧表示のクエリもD1に対して発行する形になった。

月45ドルの請求として現れた

移行後、D1の利用料として月45ドルの請求が発生した(出所: 自社の運用記録、確認日2026-09-06)。原因を辿ると、一覧表示に使っているクエリが索引の効かない条件で書かれており、1回の実行でテーブルを48,634行読み取っていた(出所: 自社の運用記録、確認日2026-09-06)。索引を持たない列で絞り込みをかけていたため、条件に合う行を探すのにテーブル全体を読み切る必要があった。

なぜ請求が出るまで気づけなかったか

D1はストレージ容量ではなく、クエリが読み取った行数(rows read)を主な課金指標にしている。Cloudflare公式ドキュメントによれば、D1はWorkers Paidプランで月間250億行のrows readが含まれ、それを超えた分が100万行あたり0.001ドルで課金され、索引を使うことで読み取る行数を減らせるとも明記されている(出所: Cloudflare公式ドキュメント「D1 Pricing」、https://developers.cloudflare.com/d1/platform/pricing/、確認日2026-09-06)。行数課金である以上、テーブルの容量が小さくても、索引の効かないクエリを繰り返し呼べば読み取り行数は積み上がる。請求には合計のrows readしか出ず、どのクエリが原因かはクエリ単位で洗い出さない限り分からなかった。

索引2本で48,634行を9行にした

原因のクエリが使っていた絞り込み条件に対して索引を2本追加したところ、同じクエリの走査行数は48,634行から9行まで減った(出所: 自社の運用記録、確認日2026-09-06)。読み取る行数がほぼ条件に一致する分だけになったため、月間の合計rows readは含まれる範囲に収まり、D1の費用は月45ドルから0円になった(出所: 自社の運用記録、確認日2026-09-06)。対応は2026年9月に完了している。

再発防止

修正後は、D1のクエリごとの走査行数を定点で見る運用に切り替えた。テーブルの行数が少ないうちは索引の欠如が遅延として表面化しにくく、費用として現れて初めて気づく形になりやすい。索引の有無をコードレビューの観点に加え、新しいクエリを足す際は走査行数を確認してから本番に載せることにしている。

索引による走査行数の最適化は、LLMを呼ぶWorkflowを本番で1回小さく起こす記事で扱った「小さく起こして確かめる」考え方とも通じる。Cloudflare上のコスト管理はR2の使用率を下げた記録も参照してほしい。ストレージ費用の全体像は姉妹記事「コストとストレージの記事」でまとめている。

自社プロダクトのCloudflare運用・コスト最適化について相談したい場合は、お問い合わせから編集部まで連絡してほしい。

よくある質問

Q1. D1の請求はなぜ発生したのか

索引が効かない条件で書かれたクエリが、1回の実行でテーブルを48,634行読み取っていた。D1は読み取った行数(rows read)を課金指標にしているため、このクエリが繰り返し呼ばれるほど請求が積み上がった。

Q2. なぜ請求が出るまで気づけなかったのか

D1の請求には合計のrows readしか出ず、どのクエリが原因かはクエリ単位で洗い出さないと分からなかった。テーブルの行数が少ないうちは体感できる遅延としても出にくい。

Q3. 何を直したのか

原因のクエリが使っていた絞り込み条件に索引を2本追加した。走査行数は48,634行から9行まで減り、月間の合計rows readが含まれる範囲に収まったことで、D1の費用は月45ドルから0円になった。

Q4. D1の課金はどのような仕組みか

Cloudflare公式ドキュメントによれば、D1はストレージ容量ではなく主にクエリが読み取った行数(rows read)を課金指標にしており、索引を使うことで読み取る行数を減らせるとされている。

関連する取り組み

CONNECTED SERIES
AIで投資の壁を越える
18 本の実装記録。AI 投資の「予測不能」と言われる 9 つの壁を、コードと実データで検証した連載。
note で読む →
稼働中
カンタン補助金
全国の補助金・助成金を横断検索し、申請書の下書きをAIが作る士業向けサービス。掲載制度1,333件。
開いてみる →

AI導入のご相談を承っています

AI導入支援の実務経験を活かし、お手伝いしています。お気軽にご相談ください。

他のカテゴリも読む

AI最新ニュース AI業界の最新ニュースと企業動向 AI導入戦略 AI投資判断・ROI分析・導入ロードマップ 業界別AI活用 製造・金融・小売など業界別のAI活用動向 導入事例 企業のAI実装プロジェクト事例とコンサルティング知見 研究論文 NeurIPS、ICMLなどの注目論文レビュー