假设我有一个包含100,000行的表EMPLOYEES
。
我有DEPENDENTS
表,其中有200,000行。
我可以从员工表中获取所有受抚养人及其关系的列表(EMPLOYEES
有一列EMP_ID
,这是[{1}}中的外键,名称为DEPENDENTS
)。
PARENT_EMP_ID
我的问题是: 如果我像这样加入表格会有什么不同:
SELECT
D.FIRST_NAME,
D.LAST_NAME,
E.EMPLOYEE_NAME AS DEPENDENT_OF
FROM
DEPENDENTS D
LEFT JOIN EMPLOYEES E ON D.PARENT_EMP_ID = E.EMP_ID
与
...
FROM DEPENDENTS D
LEFT JOIN EMPLOYEES E ON D.PARENT_EMP_ID = E.EMP_ID
注意,我已经改变了条件的顺序,保留了表本身的顺序,因为我需要来自dependents的所有行(如果我从EMPLOYEES表中得到重复项,则不关心)。
答案 0 :(得分:1)
任何逻辑连接都将转换为以下物理连接之一..
对于所有上述物理连接,每个都以不同的方式实现,并且更改条款就像您更改的方式无关紧要
以下加入你有..
E.EMP_ID = D.PARENT_EMP_ID
如果我们假设,SQL为您的查询选择了散列连接。在这种情况下,sql选择具有较少行的表作为构建表,并且它将使用此表来探测其他表..
即使您更改了联接,也没关系
答案 1 :(得分:-1)
不,根本没有变化,因为表DEPENDENTS的元素与表EMPLOYEES的元素进行比较,在两种情况下都将DEPENDENTS表保留为基表,因此条件的顺序无关紧要。但是如果基表的顺序改变了,那么两种情况的结果都会不同。