如何解决使用Union在Oracle View中所有性能都会降低
我在oracle视图下创建了一个联合添加选择查询的方法,所有这些都可以正常工作,并具有预期的结果,但是突然视图的性能变得非常慢。表IS_ID
包含510000条记录。
我真的不理解,因为通过添加此UNION ALL
select查询只是在视图中添加了400多行,但是仍然为什么现在性能变得非常慢。性能降低的主要原因是union all
中的以下语句阻塞了视图。我可以将IS_TRE
视图的union all或下面的语句分发到不同的视图以提高性能,还是可以重写下面的语句以提高性能?
WHERE
FUND_ISIN NOT IN
(
SELECT DISTINCT
FUND_ISIN
FROM
IS_ID
WHERE
MEMBER_DESCR ='O')
解决方法
关于您为何要分享的更多内容,我给了您一些评论。但这是一个免费的蜜蜂
SELECT
FUND_ISIN,MAX(FUND_QUOTE_CRNY),'O' AS MEMBER_DESCR,100 - SUM(MEMBER_RATIO),'Other total'
FROM
IS_ID
WHERE
FUND_ISIN NOT IN
(
SELECT DISTINCT
FUND_ISIN
FROM
IS_ID
WHERE
MEMBER_DESCR ='O')
GROUP BY
FUND_ISIN;
可以重写为
SELECT
FUND_ISIN,'Other total'
FROM
IS_ID
GROUP BY
FUND_ISIN
HAVING sum(case when MEMBER_DESCR ='O' then 1 else 0 end) = 0
它的性能可能会更好。
对您的实际情况是否有所影响尚不清楚。
,您可以尝试“不存在”,看看是否有帮助
FROM
IS_ID OUT_Q
WHERE
FUND_ISIN NOT EXISTS
(
SELECT 'X' FROM IS_ID IN_Q
WHERE MEMBER_IN_Q.DESCR ='O' AND OUT_Q.COLUMNS_MAKING_UP_THE_UNIQE_KEY
= IN_Q.COLUMNS_MAKING_UP_THE_UNIQE_KEY
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。