WEB开发网
开发学院数据库MSSQL Server SQL语句分析:ON与WHERE的比较_简单嵌套查询与非嵌... 阅读

SQL语句分析:ON与WHERE的比较_简单嵌套查询与非嵌套查询的比较

 2010-01-07 00:00:00 来源:WEB开发网   
核心提示:某天的工作是修复某个项目的bug,接着就发现,SQL语句分析:ON与WHERE的比较_简单嵌套查询与非嵌套查询的比较,其sql极其混乱,有非常多的left join和in操作,让“and t2.b=1”和“and t3.c=1”分别在join...on和where之间游走

某天的工作是修复某个项目的bug,接着就发现,其sql极其混乱,有非常多的left join和in操作,还有嵌套查询(只有一个表的嵌套查询)。不知道看到过哪里的资料说,嵌套查询速度慢,于是我把全部嵌套查询都改成join的形式,嵌套查询里面的where条件,我都写到join...on后面去了。突然一个想法冒出来:筛选条件跟在join...on后面 和跟在整个sql语句最后面的where后面有什么区别呢?还有嵌套查询真的慢么?于是便有下面的测试产生,

数据库环境为MS SQL 2005。

一:inner join

先看看非嵌套查询:

非嵌套inner join

a.select * from t1
inner join t2 on t1.id = t2.id
inner join t3 on t1.id = t3.id
where t1.a=1 and t2.b=1 and t3.c=1
b.select * from t1
inner join t2 on t1.id = t2.id and t2.b=1 
inner join t3 on t1.id = t3.id
where t1.a=1 and t3.c=1
c.select * from t1
inner join t2 on t1.id = t2.id and t2.b=1 
inner join t3 on t1.id = t3.id and t3.c=1
where t1.a=1

在上面三个非嵌套查询,让“and t2.b=1”和“and t3.c=1”分别在join...on和where之间游走,用Management Studio选中“包含实际的执行计划”并执行这三条语句,都得出下面这个执行计划。

SQL语句分析:ON与WHERE的比较_简单嵌套查询与非嵌套查询的比较

查看原图(大图)

1 2 3 4  下一页

Tags:SQL 语句 分析

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接