0

例如1:

select T1.*, T2.* 
from TABLE1 T1, TABLE2 T2
where T1.id = T2.id
  and T1.name = 'foo'
  and T2.name = 'bar';  

那会先通过id将T1和T2连接在一起,然后选择满足name条件的记录?或者在T1或T2中选择满足名称条件的记录,然后将它们连接在一起?

而且,example1 和 example2(DB2) 之间的性能是否存在差异?

示例2:

select * 
from  
(
  select * from TABLE1 T1 where T1.name = 'foo'
)  A, 
(
  select * from TABLE2 T2 where T2.name = 'bar'
)  B  
where A.id = B.id;
4

2 回答 2

1

查询的执行方式取决于查询计划器如何处理它。根据可用索引和表中有多少数据,查询计划可能看起来不同。计划者试图按照它认为最有效的顺序来完成工作。

如果计划器做得好,两个查询的计划应该相同,否则第一个查询可能会更快,因为第二个查询会创建两个没有任何索引的中间结果。

于 2013-08-28T17:29:31.377 回答
0

示例 1 更高效,因为它没有嵌入式查询。关于结果集是如何构建的,我不知道——我不知道 DB2。

于 2013-08-28T17:19:13.343 回答