我觉得,多表查询,采用匹配的方式要比联接方式要快。即
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)
究竟是不是这样子呢?存疑。
本文探讨了多表查询中使用匹配方式相较于联接方式的潜在性能优势,并提供了具体示例对比不同查询方法的效果,包括内外部联接及UNION ALL的应用。
9465

被折叠的 条评论
为什么被折叠?



