sql - 隐蔽左连接到简单连接
问题描述
我的 LEFT JOIN 子查询需要更长的时间。我如何将其转换为 JOIN?
SELECT * FROM "TABLE_A"
LEFT OUTER JOIN TABLE_B ON TABLE_A.mainid = TABLE_B.secondID
LEFT JOIN (
SELECT secondID
FROM TABLE_C
WHERE thirdID = 21
) Z ON TABLE_A.mainid = Z.secondID
WHERE "TABLE_A"."TRUEID" = 9
AND ((TABLE_A.USERNO IN (23))
解决方案
首先,更简洁地编写查询:
SELECT *
FROM "TABLE_A" a LEFT JOIN
TABLE_B b
ON a.mainid = b.secondID LEFT JOIN
TABLE_C c
ON a.mainid = c.secondID AND c.thirdID = 21
WHERE a."TRUEID" = 9 AND a.USERNO IN (23);
然后考虑索引:
Table_A(TRUEID, USERNO, mainid)
Table_B(secondID)
Table_C(secondID, thirdID)
推荐阅读
- eclipse - Eclipse 和 Vaadin - com.vaadin.flow.router.Route
- c++ - 为什么函数模板不能访问前向声明的类型?
- jquery - 使用 jQuery 将 JSON 文件读取为 HTML
- angular - 如何从孩子重定向到更高的级别
- javascript - CSS-Javascript:通过 javascript 动态添加的元素超出了父容器的填充约束
- python - 递归内的for循环 - Python
- python - 比较多个变量?
- linux - 如何将我的 shellscript 发布到 dpkg 管理器
- javascript - 使用基本身份验证从 API 发布
- reactjs - Reactjs-Google ReCaptcha v3 onVerify 方法不会为每次登录点击触发