我觉得,多表查询,采用匹配的方式要比联接方式要快。即


select a.*,b.* from a,b where =


要比


select a.*,b.* from a inner join


快。


这一点,在外部联接上尤其明显。


所以,遇到需要用到外部联接,如


select a.* from a left outer join b on = where =某值


我会这样写


select a.* from a,b where = and =某值

UNION ALL

select a.* from a where =某值 AND NOT EXISTS(SELECT 1 FROM b WHERE id=)

 

这还不是最优的,还可以这样写

 

WITH

select w.* from w,b where =

UNION ALL

select w.* from w where NOT EXISTS(SELECT 1 FROM b WHERE id=)



究竟是不是这样子呢?存疑。