sql - 如果第一组内部连接为空,则性能差异
问题描述
我必须使用我的数据库的 5 个表来获取数据,我写了一个这样的 SQL 查询:
SELECT *
FROM A
INNER JOIN B ON A.id_b = B.id_b
INNER JOIN C ON B.id_c = C.id_c
INNER JOIN D ON D.id_d = C.id_d
INNER JOIN E ON E.id_e = D.id_e
WHERE A.column1 = somevalue
我选择的列对我的解释无关紧要,但我需要所有表的某些列来执行操作。
我想知道:如果集合 A 根据 WHERE 子句要求为空,它会在连续的内部连接上进行吗?
解决方案
是的,不是的,也许。优化器很可能会选择以 开头的执行计划,因为您在子句A
中有过滤条件。WHERE
然后,后续JOIN
的 s 会非常快,因为 SQL 引擎不需要对JOIN
空集做太多工作。
也就是说,不能保证优化器将从第一个表开始。因此,这确实是偶然的,但考虑到您的过滤条件,这是一个合理的预期。此外,后续JOIN
的 s 将在执行计划中,但它们会很快,因为每个都有一个空集合。
推荐阅读
- encryption - 流密码的工作原理
- c# - 在 C# 中解析没有年份的闰年总是失败
- python - 在 Google App Engine 上部署 Flask 应用程序
- java - 如何在 AWS Lambda 函数中设置 java.util.logging.config.file?
- java - 如何在 selenium java 中滚动 iframe 内的 PDF
- c++ - 通过指针访问数组
- string - 如何从其他方法访问字符串
- database - 数据库关系不在 BCNF 中的最小证据是什么?
- android - Android检测人开始游戏
- sql - 如何修复错误插入值 ASP 到 SQL“将 nvarchar 数据类型转换为日期时间数据类型导致值超出范围...”