Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 查询优化与执行 » 使用实例化视图提高性能

 

定义实例化视图

在设计应用程序时,可考虑为频繁执行的开销巨大的查询或查询中开销巨大的部分(如涉及密集集合和连接操作的查询)定义实例化视图。实例化视图专用于在以下环境中提高性能:

  • 数据库很大

  • 频繁的查询导致对大量数据执行重复性集合和连接操作

  • 对基础数据的更改相对很少

  • 不严格要求访问即时数据

您不是一定要更改查询以从实例化视图中受益。例如,实例化视图非常适合于在其中的基础数据不经常更改的数据仓库应用程序中使用。

进行优化时,优化程序将保留实例化视图的列表,将这些视图视为部分或完全满足某个已提交查询的候选视图。如果优化程序发现实例化视图的某个候选视图可以满足全部或部分查询,则它会将该视图包含在为优化的枚举阶段生成的建议中,此阶段将基于开销确定最佳计划。优化程序用来将实例化视图与查询进行匹配的过程称为视图匹配。实例化视图必须满足一定条件,优化程序才能将其考虑在内。这意味着除非查询中显式引用了实例化视图,否则无法确保它会被优化程序使用。但是,您可以确保要考虑的视图均满足某些条件。

如果优化程序确定允许使用实例化视图,则会对每个候选实例化视图进行检查。如果实例化视图满足以下条件,则视图匹配算法会考虑使用该视图:

如果实例化视图满足上述条件,并且也满足全部或部分查询,则视图匹配算法会将该实例化视图包括在为优化的枚举阶段生成的建议中,此阶段将基于开销找到最佳计划。然而,这并不表示最后会在最终的执行计划中使用该实例化视图。例如,当估计另一访问计划(该计划未使用实例化视图)所需开销更低时,仍有可能不使用适用于计算查询结果的实例化视图。