我最初的问题是人们如何确定索引视图是否是个好主意?.
更新:我的基本假设是索引视图会加快它们的速度。这显然是不明智的,因为视图只是执行查询,正如下面的评论所指出的那样。
我现在正在做的与这里的这个人正在做的非常相似:我发现从 200 万行中选择大约 2K 行的视图,获取行的时间太长,我认为模式绑定索引视图可能会有所帮助。
我试图优化的操作是:
select * from vwSample where TYPE_CODE = 'X';
TYPE_CODE
是一个 10 个字符的字符串, 中大约有 2K 个唯一TYPE_CODE
值vwSample
, 中大约有 2-5 百万行vwSample
, 中每个唯一值的行数在 2K 到 10K 之间TYPE_CODE
。我没有发布我的执行计划,因为我想问一个“一般做法”的问题。
更新:看起来我的问题是错误的,我应该只编写和优化查询,而忽略存在视图的事实,甚至可能只是将其编写为常规查询而忽略此视图。并且视图中没有可用的“涡轮按钮”,可以使我的视图更快,正如接受的答案所暗示的那样。我的问题似乎归结为“我是一个 SQL Server n00b
,我对优化视图一无所知,我如何加快视图的select * from vwSomething where KEY=X
位置vwSomething
?”。
如果您经常运行聚合,通常您会索引视图,而不是神奇地加速连接。此外,如果您不使用表分区,则没有充分的理由研究分区对齐的索引视图。
您应该专注于优化查询,而不考虑视图,恕我直言。索引视图不是神奇的涡轮按钮(尽管很多人似乎认为它是)。
还要考虑是否应该只运行与视图分开的查询——通常人们为了方便而通过同一个视图运行大量查询,即使视图实际上触及的列/行多于特定查询所需的列/行。