假设我有两个表格employee
(包含字符列id
以及其他一些列)和orders
,其中包含employeeid
列和{{1} },以及其他一些ID。
说出
更有效率partno
或
select *
from employees, orders
where id = employeeid
and id = '22222'
还是不重要?
答案 0 :(得分:0)
看起来你正在尝试进行连接,在这种情况下,第二种形式不能按预期工作,它会产生错误。一旦合格,第一个看起来像这样:
select * from employees, orders where orders.id = employees.id and employees.id = '22222'
第一个相等实际上是指定从orders
表中选择行以与employees
表中的特定行连接时使用的条件。第二个是传统的where
选择标准。
答案 1 :(得分:0)
第二次检查是不必要的。 Oracle足够聪明,知道如果A = B且B = C则A = C.你不需要告诉它。
编写该查询的最佳方法是
SELECT *
FROM employees e
INNER JOIN orders o ON o.employeeid = e.id
WHERE e.id = '22222'
即使最好的计划是从orders
中employeeid
为'22222'的所有行开始,即使您没有明确指定条件,Oracle也会知道这样做
AND o.employeeid = '22222'
Oracle推断出您指定的其他条件。