日期:2014-05-17  浏览次数:20434 次

MSSQL的from表优先级问题
网上看到说orac的from表顺序是从右到左,记录最小的表放在最右边可以提高查询效率,我不知道这是为什么。
MSSQL2005的书上看到关于逻辑查询顺序,说from的两个表执行笛卡儿积,生成一个虚拟表然后再进行筛选器筛选,那么即from后面全部表都先执行笛卡儿积,如,表A有500记录,表B有100记录,那么不管A,B的顺序如何,都将生成500*100的虚拟表。那么关于记录最小的表放在最右边提高查询效率的说法是不是就不成立了?
MSSQL?优化sql? MSSQL SQL优化 sql逻辑顺序

------解决方案--------------------
引用:
我的意思是,抛开其他情况,from的表顺序是否会关系到查询效率


假设执行嵌套循环计划:

A有500记录,表B有100记录
A扫描1次,B扫描500次

B A
B扫描1次,A扫描100次

基于成本考虑,你认为哪个表该放右边?我是考虑不过SQL Server查询优化引擎。
------解决方案--------------------
引用:
我的意思是,抛开其他情况,from的表顺序是否会关系到查询效率
如果是内链接,那就完全没影响,但是如果是外联结,那么就会有影响。但是往往使用外联结是为了业务需要,所以很难说抛弃这种方法,但是可以优化其他方面。