表关联和子查询效率问题

举个简单的例子

select
a.id
b.name
(select 
comcode 
from 
comlevel
where id = a.id) code
from 
tablea a,
tableb b
where 
a.date = sysdate and
a.id = b.id(+)

其中的comlevel表为什么不放在from后面的关联里,放在关联里用内连接效率一样吗?
还是说这种写法就是因为区分左连接和内连接的?

对于这个问题,将comlevel表放在from后面的关联里和放在子查询中的效率并不一定一样,具体需要看具体的数据库优化器的实现。通常来说,将comlevel表放在from后面的关联里可能会提高查询的效率,因为数据库优化器可以利用关联条件进行更好的优化和索引扫描。而将comlevel表放在子查询中的写法,可能会导致数据库需要多次进行查询,降低查询效率。

而这种写法主要是由于需要区分左连接和内连接的情况,因为在左连接中,仅仅将comlevel表放在from后面的关联里是无法保证查询结果正确的。因此,需要使用子查询来进行关联查询,以保证查询结果的正确性。