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

问题描述 投票:1回答:1

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

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

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

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

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.