我可以索引EXTRACT(startDateTime的WEEK)吗?还是查询计划者将直接在“ startDateTime”上使用索引?

时间:2019-10-16 06:30:59

标签: google-cloud-spanner

我在某个startDateTime字段上建立了索引的大量记录,并且想在按WEEKOFYEAR(startDateTime)分组的所有记录(即EXTRACT(WEEK FROM startDateTime))上选择汇总(SUM和COUNT)。我可以在EXTRACT(WEEK FROM startDateTime)上放置二级索引吗?或者,甚至更好的是,查询是否会适当使用startDateTime上的索引来优化按WEEK分组的请求?

有关MySQL索引,请参见this similar question。在Cloud Spanner世界中如何处理?

1 个答案:

答案 0 :(得分:3)

尚不支持所生成列的辅助索引(即EXTRACT(WEEK FROM startDateTime))。如果您的覆盖索引包含查询所需的所有列(即,startDateTime以及用于分组和聚合的其他必需列),那么计划者将在基础表上使用该覆盖索引,但聚合可能基于哈希聚合。除非您在很长一段时间内进行汇总,否则这不是一个大问题(我承认这并不理想)。

如果要限制聚合时间范围,则需要按照startDateTime进行拼写(即,您需要将最小/最大日期时间转换为与startDateTime相同的类型)。

希望这会有所帮助。