【问题标题】:Scanning a Cloud Spanner table in reverse order以相反的顺序扫描 Cloud Spanner 表
【发布时间】:2017-07-06 00:57:03
【问题描述】:

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

【问题讨论】:

    标签: google-cloud-platform google-cloud-spanner


    【解决方案1】:

    没错,当前在 Cloud Spanner 中 ORDER BY DESC 的效率不如按键顺序扫描(如果键是 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),并且存储格式有效地支持前向扫描。对于索引,主键是一组列,可用于在索引中查找项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-23
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2022-06-11
      相关资源
      最近更新 更多