在设计应用程序时,可考虑为频繁执行的开销巨大的查询或查询中开销巨大的部分(如涉及密集集合和连接操作的查询)定义实例化视图。实例化视图专用于在以下环境中提高性能:
数据库很大
频繁的查询导致对大量数据执行重复性集合和连接操作
对基础数据的更改相对很少
不严格要求访问即时数据
您不是一定要更改查询以从实例化视图中受益。例如,实例化视图非常适合于在其中的基础数据不经常更改的数据仓库应用程序中使用。
进行优化时,优化程序将保留实例化视图的列表,将这些视图视为部分或完全满足某个已提交查询的候选视图。如果优化程序发现实例化视图的某个候选视图可以满足全部或部分查询,则它会将该视图包含在为优化的枚举阶段生成的建议中,此阶段将基于开销确定最佳计划。优化程序用来将实例化视图与查询进行匹配的过程称为视图匹配。实例化视图必须满足一定条件,优化程序才能将其考虑在内。这意味着除非查询中显式引用了实例化视图,否则无法确保它会被优化程序使用。但是,您可以确保要考虑的视图均满足某些条件。
如果优化程序确定允许使用实例化视图,则会对每个候选实例化视图进行检查。如果实例化视图满足以下条件,则视图匹配算法会考虑使用该视图:
已启用实例化视图供数据库服务器使用。请参见启用和禁用实例化视图。
已启用实例化视图以在优化中使用。请参见允许和禁止优化程序使用实例化视图。
已经初始化实例化视图。请参见初始化实例化视图。
实例化视图满足所有待考虑的优化程序要求。请参见实例化视图和视图匹配算法。
用于创建实例化视图的一些重要选项的值与执行查询的连接选项的值匹配。请参见实例化视图的限制。
实例化视图的上次刷新没有超过为数据库选项 materialized_view_optimization 设置的失效阈值。请参见设置优化程序的实例化视图失效程度阈值。
如果实例化视图满足上述条件,并且也满足全部或部分查询,则视图匹配算法会将该实例化视图包括在为优化的枚举阶段生成的建议中,此阶段将基于开销找到最佳计划。然而,这并不表示最后会在最终的执行计划中使用该实例化视图。例如,当估计另一访问计划(该计划未使用实例化视图)所需开销更低时,仍有可能不使用适用于计算查询结果的实例化视图。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |