首页 > 解决方案 > 是否有可能使这个 SQL 查询更快?

问题描述

我有这个查询,但它太慢了......我认为 NOT IN 函数是让我慢下来的部分

SELECT ID  
FROM APPL  
WHERE TRIM(RCNL_ID) = XXX.20191102' AND ID NOT IN  
(
    SELECT ID  
    FROM HIST  
    WHERE SUBSTR(ID, 12, 1) = '9' AND TRAN_STATUS = 'REOK'  
)  
ORDER BY ID;  

运行 50-60 秒需要一段时间,有没有一种聪明的方法可以重写它以使其更快?

这是在 Oracle Sql Developer 中

标签: sqloracle

解决方案


尝试使用物化视图(mv)或索引..? https://oracle-base.com/articles/misc/materialized-views

CREATE MATERIALIZED VIEW your_mv
PCTFREE 5
BUILD IMMEDIATE
REFRESH FORCE
ENABLE QUERY REWRITE
as
SELECT ID  
FROM APPL  
WHERE TRIM(RCNL_ID) = XXX.20191102' AND ID NOT IN  
(
    SELECT ID  
    FROM HIST  
    WHERE SUBSTR(ID, 12, 1) = '9' AND TRAN_STATUS = 'REOK'  
)  
ORDER BY ID;


推荐阅读