多表查询,采用匹配的方式要比联接方式要快

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


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


要比


select a.*,b.* from a inner join b on a.id=b.id


快。


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


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


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


我会这样写


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

UNION ALL

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

 

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

 

WITH w AS (select * from a WHERE a.id=某值)

select w.* from w,b where w.id=b.id

UNION ALL

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



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

posted on 2011-03-04 18:28  左直拳  阅读(121)  评论(0编辑  收藏  举报

导航