檢閱查詢計劃步驟 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

檢閱查詢計劃步驟

您可以執行 EXPLAIN 命令來查看查詢計畫中的步驟。下列範例顯示 SQL 查詢並說明輸出。您可以由下至上閱讀查詢計畫,以查看用於執行查詢的每個邏輯操作。如需詳細資訊,請參閱 查詢計劃

explain select eventname, sum(pricepaid) from sales, event where sales.eventid = event.eventid group by eventname order by 2 desc;
XN Merge (cost=1002815366604.92..1002815366606.36 rows=576 width=27) Merge Key: sum(sales.pricepaid) -> XN Network (cost=1002815366604.92..1002815366606.36 rows=576 width=27) Send to leader -> XN Sort (cost=1002815366604.92..1002815366606.36 rows=576 width=27) Sort Key: sum(sales.pricepaid) -> XN HashAggregate (cost=2815366577.07..2815366578.51 rows=576 width=27) -> XN Hash Join DS_BCAST_INNER (cost=109.98..2815365714.80 rows=172456 width=27) Hash Cond: ("outer".eventid = "inner".eventid) -> XN Seq Scan on sales (cost=0.00..1724.56 rows=172456 width=14) -> XN Hash (cost=87.98..87.98 rows=8798 width=21) -> XN Seq Scan on event (cost=0.00..87.98 rows=8798 width=21)

在產生查詢計畫的過程中,查詢最佳化工具會將計畫劃分為串流、區段和步驟。查詢最佳化工具會細分計畫,以準備將資料和查詢工作負載分配到運算節點。如需串流、區段和步驟的相關資訊,請參閱查詢計劃和執行工作流程

下圖顯示先前的查詢和相關聯的查詢計畫。其顯示涉及的查詢操作如何映射至 Amazon Redshift 用於為運算節點配量產生編譯程式碼的步驟。每個查詢計畫操作會映射至區段內的多個步驟,並且有時映射至串流內的多個區段。

在此圖中,查詢最佳化工具會執行查詢計畫,如下所示:

  1. Stream 0 中,查詢會以循序掃描操作執行 Segment 0,以掃描 events 資料表。查詢會使用雜湊操作繼續處理 Segment 1,為聯結中的內部資料表建立雜湊表。

  2. Stream 1 中,查詢會以循序掃描操作執行 Segment 2,以掃描 sales 資料表。它會使用雜湊連結繼續處理 Segment 2,以聯結含有不是散發索引鍵也不是排序索引鍵之聯結資料欄的資料表。它會再次使用雜湊彙總繼續處理 Segment 2,以彙總結果。然後查詢會執行 Segment 3 搭配雜湊彙總操作,以執行未排序的分組彙總函數和排序操作,進而評估 ORDER BY 子句和其他排序操作。

  3. Stream 2 中,查詢會在 Segment 4Segment 5 中執行網路操作,以將中繼結果傳送到領導節點進一步處理。

查詢的最後一個區段會傳回資料。如果傳回集合已彙總或排序,則運算節點會各自將其中繼結果部分傳送到領導節點。領導節點會接著合併資料,以便將最終結果送回給請求的用戶端。

如需 EXPLAIN 運算子的相關資訊,請參閱 EXPLAIN