sql - 试图弄清楚为什么这个 SQL 请求需要 47 分钟才能执行
问题描述
我正在尝试发出 SQL 请求,但该请求需要永远完成。该请求是在 Excel 2003 中使用 VBA 完成的。
表的大小:
- 表 1 = 12600 行
- 表 2 = 361K 行
这是查询:
SELECT DISTINCT
y.code AS CODE,
y.name AS LIBELLE,
#[...]
#[...]
#[...]
#[...]
y.IS_BILAN,
y.INACTIVE,
(SELECT COUNT(1)
FROM TABLE1 d, TABLE2 a
WHERE a.record_date_time >= '2018/01/01'
AND a.record_date_time < '2019/01/01'
AND global_status <> 'C'
AND a.id = d.id
AND d.type_id = y.code) AS TOTAL_2018
FROM
anal_exam y
ORDER BY
code
删除最后一部分“SELECT COUNT(1)”时,整个查询立即运行
我在 Oracle SQL Developer 中看到的执行计划:
我怎样才能加快这个查询?完成需要 47 分钟
解决方案
尝试JOIN
像这样定义你的:
SELECT DISTINCT
y.code AS CODE,
y.name AS LIBELLE,
y.IS_BILAN,
y.INACTIVE,
COUNT(*) AS TOTAL_2018
FROM anal_exam y
JOIN TABLE1 d
ON d.type_id = y.code
JOIN TABLE2 a
ON d.ID = a.ID
WHERE a.record_date_time BETWEEN '2018/01/01' AND '2019/01/01'
AND global_status <> 'C'
order by code
推荐阅读
- node.js - 我的 ejs 页面没有像其他 ejs 页面那样加载
- angular - 浏览器操作在无头 chrome 中不起作用
- python - Python truncate 函数未按预期工作
- php - 如何在不卸载 PHP 7.4 的情况下降级或使用 PHP 7.2?是否可以默认使用 PHP 7.2 而不是最新版本?
- android - 第一次在 xamarin 表单中使用 webivew 保存空白页
- python - 向对象添加属性
- javascript - 如何将json键与json中的额外字符串连接起来?
- javascript - 我无法在 Hook 中保存数据
- angular - NGXS 中状态的基于类的对象实例
- java - Java Mailx - openshift中的中文字符问题