联接如何与SQL中的其他查询进行比较?

时间:2018-03-22 21:51:31

标签: sql join processing-efficiency

有没有理由这样说:

SELECT Fname, Lname, Address 
FROM EMPLOYEE, DEPARTMENT
WHERE Dname='Research' AND Dnumber=Dno;

比使用更好/更差:

SELECT Fname, Lname, Address
FROM (EMPLOYEE JOIN DEPARTMENT ON Dno=Dnumber)
WHERE Dname='Research';

第二个可能更具可读性,但效率方面是否存在差异?

1 个答案:

答案 0 :(得分:0)

好吧,你正在做一个交叉连接,首先创建一个笛卡尔积,并通过比较每个属性(在你的情况下为Dnumber和Dno)和另一个属性来过滤where子句。

但是在第二个查询中,除非指定连接类型,否则默认情况下会执行内连接。这将根据ON条件创建结果。这导致查询引擎(可能因供应商和风格而异),使用ON条件执行两个表的交集。

干杯!