sql - 是否有可能使这个 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 中
解决方案
尝试使用物化视图(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;
推荐阅读
- image - 如何检测压缩图像是否是从未压缩的图像创建的
- javascript - 不要在 html 标签内执行 javascript
- javascript - 控制台输出不显示数组元素的数量。代码中无法访问的数组元素
- automated-tests - CAPL - TestStepInconclusive - “当前上下文中不允许使用函数”
- android - LifecycleRegistry 的 popParentState 处的 ArrayIndexOutOfBoundsException
- java - 如何解决命令提示符中的“找不到或加载主类类名”错误?
- asp.net - asp.net mvc 中单选按钮的 HTML 帮助器语法
- reactjs - 从 axios 响应设置状态并在渲染中使用它
- javascript - 在 VS Code 中检查样式组件的 CSS 错误
- c# - FFMPEG。结合命名管道中的 rawAudio 和 rawVideo