我们有这个查询,我们试图确定客户与多个信贷选择指标。我们必须在报表中反映此查询输出,并将其共享给业务用户。我们几乎每周都要运行这个查询,而且这个查询需要时间。
查询
select CUST_ID, CUST_COUNT from (
SELECT N.CONS_ID AS CUST_ID,
COUNT(DISTINCT(case when M.CO_ID is null then 1 else m.co_id end)) AS CUST_COUNT
FROM CTS_VIEW.CNSLD_CREDIT_SUM M
INNER JOIN CTS_VIEW.LEGACY_CODE_XREF N
ON M.EE_ID = N.EE_GBL_IND
WHERE M.PROD_DT >= DATE '2018-12-31'
GROUP BY N.CONS_ID
) a
where CUST_COUNT>1;
有没有更好的方法来编写这个查询,可以加快执行时间。我们已经在会话级别应用了cbo并启用了矢量化。
2条答案
按热度按时间dl5txlt91#
使用这样的临时表,这个查询可能会更快。同时,应该检查这些表所需的索引。
kr98yfug2#
我认为cte或通用表表达式将有助于实现这些目标-
使用cte背后的概念是增加ddl中数据的可重用性。