【发布时间】:2020-01-10 21:49:16
【问题描述】:
我有以下疑问:
select
Table1.Id,
Table1.SomeColumn1,
Table1.SomeColumn2,
Table1.SomeColumn3
Table2.Id,
Table2.SomeColumn,
from
Table1
inner join
Table2 on Table1.Table2_Id = Table2.Id
inner join
Table3 on Table3.Id = Table2.Table3_Id
where
Table3.Some_Column = 181715
- Table1.Table2_Id 已编入索引(非集群)
- Table2.Table3_Id 已编入索引(非集群)
- Table3.Some_Column 已编入索引(非聚集)
- 所有主键都有索引(聚集索引)
尽管如此,查询的性能很糟糕。
查询执行计划如下: https://snipboard.io/Xd67ru.jpg
正如我们所见,数据库引擎正在对 Table1 进行全表扫描,这是完全没有必要的(因为所有连接都在索引列上)。
怎么了?如何改进?
【问题讨论】:
标签: sql sql-server performance indexing