2017-02-16 82 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),並且存儲格式支持高效的正向掃描。對於索引,主鍵是可用於在索引中查找項目的一組列。