[英]Redshift SQL Join on Date columns with date ranges on tables with million records
給定兩個表 A(有 5000 萬條記錄)和 B(有 6000 條記錄)。
沒有分區。
表 A:SortKey(開始日期、結束日期)
ID | 開始日期 | 結束日期 |
---|---|---|
11 | 2019-01-01 | 2019-06-01 |
66 | 2020-05-01 | 2020-07-31 |
88 | 2021-03-01 | 2021-11-31 |
表 B:排序鍵(rec_date)
記錄日期 |
---|
2019-02-01 |
2019-03-01 |
2020-07-01 |
2021-05-15 |
結果表:
ID | 開始日期 | 結束日期 | 記錄日期 |
---|---|---|---|
11 | 2019-01-01 | 2019-06-01 | 2019-02-01 |
11 | 2019-01-01 | 2019-06-01 | 2019-03-01 |
66 | 2020-05-01 | 2020-07-31 | 2020-07-01 |
88 | 2021-03-01 | 2021-11-31 | 2021-05-15 |
當前代碼是-
select a.id,
a.start_date,
a.end_date,
b.rec_date
from tableA a
join tableB b
on b.rec_date between a.start_date and a.end_date;
查詢計划: XN 嵌套循環 DS_BCAST_INNER (cost=0.00..5981078476.08 rows=24749818904 width=40) -> XN Seq Scan on TableA a (cost=0.00..649222.88 rows=64922288 width=36) -> XN Seq Scan on TableB b(成本=0.00..34.31 行=3431 寬度=4)
這段代碼需要很長時間才能運行。 尋找任何更好的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.