sql-server – JOIN的顺序是否有所作为?

前端之家收集整理的这篇文章主要介绍了sql-server – 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

如果我在Table2和Table3上更改了联接的顺序,我会看到性能提升吗?见下文:

SELECT t1.id,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版本是否有所不同?

解决方法

连接的顺序没有区别.

有什么不同是确保您的统计数据是最新的.

检查统计信息的一种方法是在SSMS中运行查询包括实际执行计划.如果估计的行数与执行计划的任何部分使用的实际行数非常不同,那么您的统计信息已过期.

重建相关索引时重建统计信息.如果您的生产维护窗口允许,我会每晚更新统计信息.

这将更新数据库中所有表的统计信息:

exec sp_MSforeachtable "UPDATE STATISTICS ?"

猜你在找的MsSQL相关文章