【发布时间】:2019-12-17 08:01:42
【问题描述】:
我的查询与涉及多个表或其他数据库对象的 JOIN 逻辑有关。
查询 1: 如果有一段代码包含涉及多个表的连接逻辑,我们应该在 ON 子句中首先比较哪些列? 就像,我们应该考虑主键列,然后是外键列,然后是其他必需的列 例如:
c.dept_ID = d.dept_ID
AND d.product_ID = e.product_ID
AND ----
----
这些比较的顺序对于查询性能真的很重要吗?
查询 2: 假设表别名 c 有 100 个部门或表别名 d 有 10 个部门,比较顺序在这里重要吗?喜欢,
c.dept_ID = d.dept_ID or
d.dept_ID = c.dept_ID
查询 3: 如果我们同时包含多个表的视图,应该最后还是首先比较相关的列?
【问题讨论】:
-
在相关字段之间拥有索引或引用链接将对性能产生更大的影响。如果您确实有性能问题,请使用慢速请求分析来查看哪些查询是您的问题。
-
您能否详细说明“慢速请求分析”或提供任何可以帮助我的网络链接或示例场景。实际上,我正处于学习阶段,并且有很多与此相关的疑问。
-
这个答案是旧的,但基础仍然是正确的。请花一些精力自己研究问题。 stackoverflow.com/questions/257906/…
-
感谢 Dragonthoughts。将通过您共享的链接。
-
@Dragonthoughts 或其他人:你能在第二个和第三个查询上帮助我吗?
标签: sql-server performance join