关于JOIN逻辑性能的改善

时间:2019-12-17 08:01:42

标签: sql-server performance join

我的查询与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: 如果我们同时包含视图和多个表,应该查看相关列的最后还是最先比较?

2 个答案:

答案 0 :(得分:0)

这可能取决于此描述中许多未知的事情。诸如索引/统计,表设计,数据等。以不同的方式编写条件,并比较查询优化器产生的查询条件,以找出

答案 1 :(得分:0)

在大多数情况下,加入顺序条件无关紧要。

请问哪个连接将过滤多少数据? 联接是仅过滤数据还是仅需要数据。

查询2:没关系。

查询3:问题无效。具体取决于示例。