有没有理由这样说:
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';
第二个可能更具可读性,但效率方面是否存在差异?
答案 0 :(得分:0)
好吧,你正在做一个交叉连接,首先创建一个笛卡尔积,并通过比较每个属性(在你的情况下为Dnumber和Dno)和另一个属性来过滤where子句。
但是在第二个查询中,除非指定连接类型,否则默认情况下会执行内连接。这将根据ON条件创建结果。这导致查询引擎(可能因供应商和风格而异),使用ON条件执行两个表的交集。
干杯!