在 Query Analyser 中运行上面两句,查看 Excution Plan 可以看出:第一条查询使用了 Inner Join ,而第二条使用了 Outer Join ,显然第一条的查询效率高。其实第一条等价于:
select A.col1,B.col2 from A inner join B on A.col1 = B.col1其实第二条等价于:
select A.col1,B.col2 from A left outer join B on A.col1 = B.col1
select A.col1,B.col2 from A inner join B on A.col1 = B.col1其实第二条等价于:
select A.col1,B.col2 from A left outer join B on A.col1 = B.col1
还是用表连接吧”我并不这样认为, SQL Server 的查询优化器非常聪明,会自动把这样的查询转换成 outer join ,上面两个查询,都只需要两次 Table Scan ,唯一的区别是,第二种查询使用 outer join ,会引入多余的 NULL 记录而降低效率。其实,如果数据两不大的话,两中查询在 Query Analyser 中运行时间几乎是一样的。
这两种语句我以前比较过,差很多
几千条数据就明显btw:数据量不大,要数据库干甚?
有时间我再看看数据库的实现原理