请问在一个查询里表连接的顺序对查询的性能是否有影响?

如果有影响,我想问连接时的顺序是从左到右还是从右到左?

如: a inner join b on condition1 left outer join c on condition2
inner join d on condition3
其执行连接的顺序是什么?如果各个表的大小不一样,那么应该遵循什么规则才能达到最快速度?

不好意思,在书上找不到,就上来问啦。另外,where子句里的各个条件语句放置顺序是否对查询有影响?

---------------------------------------------------------------

sql server的自动优化机制使得这个次序是没有意义的,除非你自己指定了油画选项。

---------------------------------------------------------------

where子句里的各个条件语句放置顺序是否对查询有影响?

据我观察没有。因为不管你怎样放,mssql最后都会按他的规则排顺序。
据我所知,所有常量逻辑总是会排在最前面。比方说:
where 1=1 and 列a='a'
sql在查询时总是会把1=1之类的放在前面。
---------------------------------------------------------------

Where 后面的条件有影响,在同等条件,把记录多条件的放在最后面,因为Where 语句总是从最后面的语句开始执行,这样会减少过滤时间(也就是执行时间呢!)。
---------------------------------------------------------------

有影響,sql查詢優化器根據where循序採用索引,除非指定索引
---------------------------------------------------------------

SQL SERVER 的查询引擎是基于开销的查询引擎.
基于开销的查询优化器在备选计划中选择应答 SQL 查询的计划。选择是基于对执行特殊计划的开销估算(I/O 操作数、CPU 秒数,等等)而作出的。它通过记录表或索引中记录的数目和构成的统计数字估算这些开销。与基于语法的查询优化器不同,它不依赖于查询的确切语法或查询中的子句顺序。

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus