Sql server 在多个表上使用内部联接优化查询性能-MS SQL Server
我正在研究如何提高查询性能。表结构及查询如下: 共有5个表格: 基本(Id,第1列)主群集索引位于(Id) (Id,第1列,第2列,上次更新日期)上的(Id,上次更新日期)复合主聚集索引 B(Id,第1列,第2列,上次更新日期)上的复合主聚集索引(Id,上次更新日期) C(Id,第1列,第2列,上次更新日期)上的复合主聚集索引(Id,上次更新日期) D(Id,第1列,第2列,上次更新日期)上的复合主聚集索引(Id,上次更新日期) E(Id,第1列,第2列,上次更新日期)上的复合主聚集索引(Id,上次更新日期) 基表中的行数为50k,其余表中的行数为800k 我正在尝试优化的查询:Sql server 在多个表上使用内部联接优化查询性能-MS SQL Server,sql-server,query-optimization,Sql Server,Query Optimization,我正在研究如何提高查询性能。表结构及查询如下: 共有5个表格: 基本(Id,第1列)主群集索引位于(Id) (Id,第1列,第2列,上次更新日期)上的(Id,上次更新日期)复合主聚集索引 B(Id,第1列,第2列,上次更新日期)上的复合主聚集索引(Id,上次更新日期) C(Id,第1列,第2列,上次更新日期)上的复合主聚集索引(Id,上次更新日期) D(Id,第1列,第2列,上次更新日期)上的复合主聚集索引(Id,上次更新日期) E(Id,第1列,第2列,上次更新日期)上的复合主聚集索引(Id,
select * from Base base
inner join A a on a.Id = base.id and a.last_updated_date between '2000-01-01' and '2015-12-31'
inner join B b on b.Id = base.id and b.last_updated_date = a.last_updated_date
inner join C c on c.Id = base.id and c.last_updated_date = a.last_updated_date
inner join D d on d.Id = base.id and d.last_updated_date = a.last_updated_date
inner join E e on e.Id = base.id and e.last_updated_date = a.last_updated_date
简言之,上面的查询正在从基表中Id的所有表中检索所有可用信息
通过查看计划,我观察到如下情况:
我有过这样的情况。由于过时的统计数据,我的表现很差。您可以做的是,更新所有表的表统计信息或使用哈希联接 尝试了这种方法,但在执行时间、逻辑读取或物理读取方面没有任何改进。其中2个表有30多列,只有这些表承担了大部分成本。