觀點 · 資訊分享
Cloudflare R2 SQL 學會 JOIN 與子查詢:多張 Iceberg 表可以直接在 R2 上一次查完
Cloudflare 在 5 月 15 日的更新日誌宣布,R2 SQL 支援跨多張 Iceberg 資料表的 JOIN、子查詢與多表 CTE。資料不必先匯出到外部資料倉儲,就能做比較複雜的分析。
- 發布
- 2026-05-15
- 篇幅
- 約 3 分鐘 · 1,473 字
- 結構
- 7 節 + 4 題常見問題
- 標籤

一句話看懂:Cloudflare 的 R2 SQL 現在可以把多張資料表接在一起查(JOIN),也支援子查詢,放在 R2 的分析資料不用匯出就能做比較複雜的統計。

先用白話講:R2 SQL 與 JOIN 是什麼?
想像你有兩份 Excel:一份是「客戶名單」,一份是「訂單紀錄」。如果只能一次看一份,你想知道「哪位客戶下的單最多」,就得自己在兩份表之間來回對照。JOIN 的意思,就是請系統用共同的欄位(例如客戶編號)把兩份表自動對起來,一次給你答案。
R2 SQL 是 Cloudflare 提供的查詢服務:你的資料以 Apache Iceberg 格式存在 R2(Cloudflare 的物件儲存)裡,R2 SQL 直接在 Cloudflare 的全球網路上幫你下 SQL 指令查詢,不用自己管伺服器,也不用把資料搬到別的資料倉儲。
發生什麼事
Cloudflare 在 5 月 15 日的更新日誌宣布,R2 SQL 現在支援在單一查詢中結合多張 Iceberg 資料表。官方列出的新能力有:
- JOIN:INNER、LEFT、RIGHT、FULL OUTER、CROSS,以及用逗號寫在 FROM、條件放在 WHERE 的隱含 JOIN
- 子查詢:IN / NOT IN、EXISTS / NOT EXISTS、放在 SELECT / WHERE / HAVING 的純量子查詢,以及放在 FROM 的衍生資料表
- 多表 CTE:WITH 子句可以引用不同的資料表,也可以包含 JOIN
- 自我 JOIN:用不同別名把一張表跟自己接起來
- 多路 JOIN:一個查詢中串接三張以上的資料表
什麼時候會用到
- 想把「網站清單」跟「請求紀錄」接起來,算出每個網站的流量
- 想找出「曾經被防火牆擋下過的網站」,用 EXISTS 子查詢判斷
- 想先算出流量前 50 名的網站,再跟威脅事件統計合併,用多表 CTE 加 JOIN 完成
給開發者的技術細節
以下是自己簡化的範例,把兩張表接起來統計:
SELECT z.domain, COUNT(*) AS request_count
FROM my_namespace.zones z
INNER JOIN my_namespace.http_requests h ON z.zone_id = h.zone_id
GROUP BY z.domain
ORDER BY request_count DESC
LIMIT 20
- 資料表需要是存在 R2 Data Catalog 的 Iceberg 表
- 官方另外提供完整的 SQL 語法參考,以及「限制與最佳實務」頁面說明 JOIN 的效能建議,寫查詢前建議先看
- 這則更新沒有提到價格或查詢量上限的變動,目前官方公告沒有說明
我的看法
我自己的專案大多是中小型網站,資料量不大,直接用一般資料庫就夠,不一定用得到 Iceberg 這一類的大型分析架構。但這個方向值得留意:越來越多雲端服務讓你「資料放在便宜的物件儲存,要用時直接下 SQL」,不用另外養一套資料倉儲。
對想做網站流量、日誌分析的小團隊來說,能 JOIN 是從「只能看單張報表」進步到「能做真正分析」的關鍵一步。不過我會先用小資料量測試效能與費用,再決定要不要把分析流程搬過來。
名詞小辭典
- R2:Cloudflare 的物件儲存服務,用來存放檔案與大量資料。
- Apache Iceberg:一種管理大型資料表的開放格式,讓存在物件儲存裡的資料能像資料庫表格一樣被查詢。
- JOIN:把多張資料表依共同欄位接在一起的查詢方式。
- CTE:用 WITH 先定義一段「暫時結果」,讓後面的查詢可以引用,讓長查詢更好讀。
資料來源
常見問題
R2 SQL 是什麼?
Cloudflare 提供的無伺服器 SQL 查詢引擎,專門查詢存放在 R2(Cloudflare 的物件儲存)裡、格式為 Apache Iceberg 的資料表,不需要自己架伺服器,也不用把資料先匯出到別的資料倉儲。
JOIN 是什麼意思?
把兩張以上的資料表依照共同欄位(例如網站編號)接在一起查詢。像是把「網站清單」和「請求紀錄」對起來,算出每個網站有多少請求。
跟以前差在哪?
官方這則更新的重點是:現在可以在單一查詢中結合多張 Iceberg 資料表,並且使用子查詢與多表 CTE,能寫出更複雜的分析查詢。
效能有什麼要注意?
官方另外提供「限制與最佳實務」頁面講 JOIN 的效能建議,這則更新公告本身沒有寫效能數字,請以官方文件為準。
接著讀
全部觀點 →Cloudflare 的 Pipelines、R2 SQL 等三項資料服務 8/3 起收費:R2 SQL 每掃 1 TB 約 2.5 美元Cloudflare 宣布 R2 Data Catalog、Pipelines 與 R2 SQL 對非企業帳號正式開始計費,超過免費額度的用量會出現在下一期帳單。官方也各附了一個計費範例。閱讀 →Cloudflare Pipelines 與 R2 Data Catalog 支援 Terraform:4 個新資源,把整條資料管線寫成程式碼Cloudflare 的 Terraform provider v5.19.0 新增 4 個資源,讓你用程式碼定義 R2 Data Catalog、資料串流、輸出目的地與用 SQL 串起它們的管線。串流資料寫進 R2 的 Iceberg 資料表,也能版本控管。閱讀 →Cloudflare 為 Brotli 漏洞緊急上架 WAF 規則:預設只記錄不攔截,上線前先檢查你的覆寫設定Brotli 壓縮函式庫爆出 CVE-2026-111497 後,Cloudflare 在 10 月 25 日為 Managed Ruleset 緊急加了兩條規則,預設只記錄、不攔截。如果你曾把整組規則改成封鎖,新規則上線就會直接擋下符合的請求。閱讀 →