2017-02-16 17 views
0

プライマリキーの順序が指定されていないクラウドスパナテーブルがあるため、デフォルトではASC(昇順)です。私は主キーで結果をDESC(降順)順に並べ替えるためのクエリを持っています。 Cloud Spannerのドキュメントに基づいて、ORDER BY DESCはテーブルを逆の順序でスキャンする最も効率的な方法ではないようです。リバース・スキャンを実行する正しい方法は、表に逆索引を作成することです。それが最善のアプローチですか、それとももっと良いことができますか?クラウドスパナテーブルを逆順にスキャン

答えて

0

これは正しいですが、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参照)。ストレージ形式は、フォワードスキャンを効率的にサポートしています。索引の場合、主キーは索引内の項目をルックアップするために使用できる列のセットです。