加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 08:54:49 所属栏目:MsSql教程 来源:网络整理
导读:说我有一个如下所示的查询: SELECT t1.id,t1.NameFROM Table1 as t1 --800,000 recordsINNER JOIN Table2 as t2 --500,000 recordsON t1.fkID = t2.idINNER JOIN Table3 as t3 -- 1,000 recordsON t1.OtherId = t3.id 如果我在Table2和Table3上更改了联接的
说我有一个如下所示的查询:
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 ?"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读