说我有类似下面的查询:JOIN的顺序是否有所不同?
SELECT t1.id, t1.Name
FROM Table1 as t1 --800,000 records
INNER JOIN Table2 as t2 --500,000 records
ON t1.fkID = t2.id
INNER JOIN Table3 as t3 -- 1,000 records
ON t1.OtherId = t3.id
我会看到性能提升,如果我改变了我的加入对表2和表3的顺序。请看下图:
SELECT t1.id, t1.Name
FROM Table1 as t1 --800,000 records
INNER JOIN Table3 as t3 -- 1,000 records
ON t1.OtherId = t3.id
INNER JOIN Table2 as t2 --500,000 records
ON t1.fkID = t2.id
我听说查询优化器将尝试确定最佳的顺序,但并不总是奏效。您使用的SQL Server版本是否有所作为?
我该如何检查?我应该多长时间更新一次我的统计资料是否有一个很好的经验法则? – 2010-01-28 00:47:27
实际执行计划中是否包含预计和实际行?所以,如果它估计1行,它返回数千,那么我可能需要更新我的统计数据?如果我加入临时桌子,它会有所作为吗? – 2010-01-28 01:06:34
另外,如果加入视图,统计是否会有所作为? – 2010-01-28 01:22:34