在创建索引视图之后,我尝试禁用基表中的所有索引,包括外键列的索引(约束仍然存在),视图的查询计划保持不变。索引视图的索引基表有益吗?
它就像魔术对我来说,索引视图将能够如此多的优化查询,即使没有被索引的基表。即使在视图上没有任何索引,SQL Server也能够对索引视图的主键索引执行索引扫描,以获取比使用基表快1000倍的数据。
喜欢的东西SELECT * FROM MyView WITH(NOEXPAND) WHERE NotIndexedColumn = 5 ORDER BY NotIndexedColumn
所以前两个问题是:
- 是否有索引视图索引基表什么好处?
- 当约束位于未索引列时,Sql服务器在对PK进行索引扫描时做了什么?
然后我注意到,如果我使用全文搜索+订单,我会在查询计划中看到一个表假脱机(热衷假脱机),成本为95%。
查询看起来像SELECT ID FROM View WITH(NOEXPAND) WHERE CONTAINS(IndexedColumn, '"SomeText*"') ORDER BY IndexedColumn
问题N°3:
- 有没有我可以添加到摆脱任何操作指数?
检查阅读更深入的这样的回答:HTTP://stackoverflow.com/questions/40677421/how-is-blob-stored-in-an-indexed-view/40678073# 40678073 – TheGameiswar
@TheGameiswar从我已阅读的索引视图只存储结果的部分子集,而不是100%重复。所以即时通讯仍然好奇,看看是否有任何好处索引原始表 – Steve