【发布时间】:2021-07-02 05:58:02
【问题描述】:
我想加入一个带有大结果集(+ 6M 行)的表。
我有下表
| Period | Zone | TAG | NAME | PROGRAM | COST |
|---|---|---|---|---|---|
| 2020-10-01 | EMEA | A | User2 | Program 2 | 98 |
| 2020-11-01 | APAC | A | User2 | Program 2 | 103 |
| 2020-12-01 | NA | A | User2 | Program 2 | 118 |
| 2020-10-01 | NA | X | User3 | Program 3 | 334 |
| 2020-11-01 | EMEA | X | User3 | Program 3 | 362 |
| 2020-12-01 | APAC | X | User3 | Program 3 | 380 |
我想要一个具有这种输出的高效查询(我不介意没有值可以是 0 或 null):
| Period | Zone | TAG | NAME | PROGRAM | COST | COST EMEA | COST APAC | COST NA |
|---|---|---|---|---|---|---|---|---|
| 2020-10-01 | EMEA | A | User2 | Program 2 | 98 | 98 | 0 | 0 |
| 2020-11-01 | APAC | A | User2 | Program 2 | 103 | 0 | 103 | 0 |
| 2020-12-01 | NA | A | User2 | Program 2 | 118 | 0 | 0 | 118 |
| 2020-10-01 | NA | X | User3 | Program 3 | 334 | 0 | 0 | 334 |
| 2020-11-01 | EMEA | X | User3 | Program 3 | 362 | 362 | 0 | 0 |
| 2020-12-01 | APAC | X | User3 | Program 3 | 380 | 0 | 380 | 0 |
如果我执行以下查询需要很长时间:
WITH TOTAL AS (
SELECT Period,Zone,TAG,NAME,PROGRAM,COST
FROM "DB"."SCHEMA"."Table"
)
SELECT T.*,E."COST" AS "COST EMEA",A."COST" AS "COST APAC",N."COST" AS "COST NA"
FROM TOTAL T , TOTAL E, TOTAL A, TOTAL N
WHERE T."Period" = E."Period"
AND T."Period" = A."Period"
AND T."Period" = N."Period"
我该如何改进这个查询?有没有一种有效的方法来执行它?
【问题讨论】:
标签: sql performance join snowflake-cloud-data-platform