2017-02-16 87 views
0

我有一个Cloud Spanner表,其主键排序未指定,所以它默认为ASC(升序)。我有一个查询,我想在DESC(降序)顺序中按主键排序结果。基于Cloud Spanner文档,似乎ORDER BY DESC并不是以相反顺序扫描表的最有效方式。据我了解,执行反向扫描的正确方法是在表上创建反向索引。这是最好的方法,还是有更好的我可以做的?以相反顺序扫描Cloud Spanner表

回答

0

这是正确的,ORDER BY DESC目前在Cloud Spanner中的效率并不像按键顺序扫描(如果按ASC顺序)。您可以使用DESC顺序创建二级索引,或者可以在表的主键中使用DESC排序(不幸的是,这会要求您重新创建表)。

通常,任何与表或索引排序不匹配的ORDER BY子句都需要排序步骤,因此会影响性能。因此,如果表或索引以相同的方式排序,则会执行ORDER BY DESC扫描。如果某些关键组件是按顺序排列的ASC,而其中一些是DESC,则这会变得特别复杂,因此最好确保ORDER BY子句与表或索引的顺序完全匹配。要了解的重要一点是Spanner以主键顺序存储数据(请参阅https://cloud.google.com/spanner/docs/schema-and-data-model#primary_keys),并且存储格式支持高效的正向扫描。对于索引,主键是可用于在索引中查找项目的一组列。