我在某个startDateTime
字段上建立了索引的大量记录,并且想在按WEEKOFYEAR(startDateTime)
分组的所有记录(即EXTRACT(WEEK FROM startDateTime)
)上选择汇总(SUM和COUNT)。我可以在EXTRACT(WEEK FROM startDateTime)
上放置二级索引吗?或者,甚至更好的是,查询是否会适当使用startDateTime
上的索引来优化按WEEK分组的请求?
有关MySQL索引,请参见this similar question。在Cloud Spanner世界中如何处理?
答案 0 :(得分:3)
尚不支持所生成列的辅助索引(即EXTRACT(WEEK FROM startDateTime))。如果您的覆盖索引包含查询所需的所有列(即,startDateTime以及用于分组和聚合的其他必需列),那么计划者将在基础表上使用该覆盖索引,但聚合可能基于哈希聚合。除非您在很长一段时间内进行汇总,否则这不是一个大问题(我承认这并不理想)。
如果要限制聚合时间范围,则需要按照startDateTime进行拼写(即,您需要将最小/最大日期时间转换为与startDateTime相同的类型)。
希望这会有所帮助。