有没有办法预先汇总聚合函数的结果(f.i. count())并将其存储在索引中?
背景是:我想加快count()查询。那样:
从TE123中选择计数(用户) 其中region ='A';
将受到类似索引的支持 区域数(用户) A 548 E 458
我知道MQT也可以解决这个问题。但是,在这种情况下,不可能使用MQT,因为我们使用ORM的类型,我们不想在MQT上定义实体。
我只是稍微记得 - 一位DBA告诉我 - DB2 V10计划有这样的功能。
答案 0 :(得分:0)
即使没有重写查询,MQT仍可能会有所帮助。
物化查询表可以显着提高性能 查询,尤其是复杂的查询。如果优化器确定了 可以使用MQT(查询)来解析查询或查询的一部分 可能会被重写以利用MQT。
使用称为自动查询重写的进程,DB2®可以识别何时 它可以透明地重写提交的查询以使用存储的 导致具体化的查询表。通过查询物化 查询表而不是计算底层基础的结果 表,DB2可以更多地处理一些复杂的查询 有效。
MQT的知识已集成到SQL和XQuery编译器中。在 编译器,查询重写阶段和优化器匹配查询 使用MQT并确定是否在查询中替换MQT 访问基表。如果使用MQT,解释工具可以 提供有关选择了哪个MQT的信息。在这种情况下,用户 需要对基表的访问权限,而不是重新路由的MQT。