SQL查询的效率

时间:2016-07-13 18:22:09

标签: sql oracle query-performance

假设我有两个表格employee(包含字符列id以及其他一些列)和orders,其中包含employeeid列和{{1} },以及其他一些ID。

说出

更有效率
partno

 select * 
 from employees, orders 
 where id = employeeid 
   and id = '22222'

还是不重要?

2 个答案:

答案 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'

即使最好的计划是从ordersemployeeid为'22222'的所有行开始,即使您没有明确指定条件,Oracle也会知道这样做

AND       o.employeeid = '22222'

Oracle推断出您指定的其他条件。