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 ?" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |