【探讨】索引视图如何提高性能
2010-01-25 00:00:00 来源:WEB开发网核心提示: • 查询中的联接条件必须是视图中的联接条件的超集,• 查询中的聚合列必须可从视图中的聚合列的子集派生,【探讨】索引视图如何提高性能(6),• 查询选择列表中的所有表达式必须可从视图选择列表或未包含在视图定义中的表派生,• 如果与其他谓词所匹配的行的超集相匹
• 查询中的联接条件必须是视图中的联接条件的超集。
• 查询中的聚合列必须可从视图中的聚合列的子集派生。
• 查询选择列表中的所有表达式必须可从视图选择列表或未包含在视图定义中的表派生。
• 如果与其他谓词所匹配的行的超集相匹配,那么该谓词将归入另一个谓词。例如,“T.a=10”归入“T.a=10 and T.b=20”。任何谓词都可归入其自身。视图中限制表值的那部分谓词必须归入查询中限制相同表的那部分谓词。此外,必须以 SQL Server 可验证的方式实现这一点。
• 属于视图定义中的表的查询搜索条件谓词的所有列必须出现在下列视图定义的一项或多项中:
(1) 一个 GROUP BY 列表。
(2) 视图选择列表(如不存在 GROUP BY)。
(3) 视图定义中相同或等价的谓词。
情况 (1) 和 (2) 允许 SQL Server 对视图的列应用查询谓词,以便进一步限制视图的列。情况 (3) 比较特殊。在这种情况下,不需要对列进行筛选,因此该列不必出现在视图中。 如果查询不止包含一个 FROM 子句(子查询、派生表、UNION),优化器可能选择几个索引视图来处理查询,并将它们应用到不同 FROM 子句。
3、创建索引视图
创建索引视图所需的步骤对于视图的成功执行至关重要。
(1) 针对将在视图中引用的所有现有表,确认 ANSI_NULLS 的设置正确无误。
(2) 创建任何新表之前,确认对下表所示的当前会话正确设置了 ANSI_NULLS。
(3) 创建任何新表之前,确认对下表所示的当前会话正确设置了 ANSI_NULLS 和 QUOTED_IDENTIFIER。
(4) 确认视图定义具有确定性。
(5) 使用 WITH SCHEMABINDING 选项创建视图。
[]
赞助商链接