【发布时间】:2016-09-12 16:04:02
【问题描述】:
我有一张非常大的桌子,每天都会装满。业务用户大多只对月度快照感兴趣(每个月按关键字段的最新记录)。
例如:
Loan_Number Balance Load_Date
1 $1 4/25/2016
1 $.75 2/15/2015
1 $1.50 4/13/2016
2 $2 1/1/2016
2 $2.75 4/30/2016
2 $2.50 5/05/2016
2 $2 4/15/2016
3 $3 5/05/2016
3 $3.50 5/15/2016
四月的快照是:
SELECT *
FROM Loan_Table
WHERE Load_Date <= DATE '4/30/2016'
QUALIFY
row_number() OVER(
PARTITION BY Loan_Number
ORDER BY Load_Date DESC)
= 1
是否有任何索引或分区结构可以添加到此表以提高性能?如果有帮助,我们正在运行 TD 14。
【问题讨论】:
-
当前的 PI 是多少?根据您的 WHERE 条件,April 可能还包括前几个月的行?
-
@dnoeth 当前 PI 是 Loan_Number。是的,在这种情况下,如果账户余额自 2 月以来没有发生变化,就会发生这种情况。 Load_Date 实际上是系统生成的插入时间戳。仅当余额发生变化时才会加载新的贷款记录。
标签: sql query-optimization teradata database-administration