我们看一下分析函数减少大表的扫描次数。
下面案例使用Oracle自带示例数据,Schema为sh。
首先,需求如下,我们要求产品id,时间id,产品销售数量,以及到目前时间的累积销售数量。
先来一个性能较好的分析函数版本。
WITH TMP AS
(SELECT S.PROD_ID,
S.TIME_ID,
S.QUANTITY_SOLD,
SUM(S.QUANTITY_SOLD) OVER (PARTITION BY S.PROD_ID
ORDER BY S.TIME_ID
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS SUM_QUANTITY_SOLD
FROM SALES S WHERE ROWNUM>0
GROUP BY S.PROD_ID,
S.TIME_