在深入研究涉及聚合的查询的潜在加速之后,我发现更新Materialized Views
:
REFRESH MATERIALIZED VIEW foo.bar;
可能会显著提高查询聚合数据的能力。
我有三个相关问题:
- 更新实例化视图是否被视为幂等操作?
- 如果是这样,它与重新生成表或重新运行查询有何不同?
- 刷新实例化视图是否有从缓存中获益的好处?
-
是的,如果基础数据在此期间没有更改。
-
定义表的查询在刷新实例化视图时运行。所以这里没有区别。但是,如果您需要经常运行相同的查询,而是查询具体化视图,则可以提高性能。
-
就像任何查询一样:如果缓存了基础表,
REFRESH
会更快。