例如:
select T1.*, T2.*
from TABLE1 T1, TABLE2 T2
where T1.id = T2.id
and T1.name = 'foo'
and T2.name = 'bar';
首先通过id连接T1和T2,然后选择满足名称条件的记录? 或者选择满足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;
答案 0 :(得分:1)
查询的执行方式取决于查询计划程序对其执行的操作。根据可用的索引和表中的数据量,查询计划可能看起来不同。计划者试图按照它认为最有效的顺序进行工作。
如果规划人员做得很好,两个查询的计划应该相同,否则第一个查询可能会更快,因为第二个查询会创建两个没有任何索引的中间结果。
答案 1 :(得分:0)
例1更有效,因为它没有嵌入式查询。关于如何构建结果集,我不知道 - 我不知道DB2。