概要
ここではSpannerのSELECT構文で、複数キーを指定する方法を記載します
よりよい書き方があれば指摘していただくとうれしいです!
具体的な方法
キーが一つの場合
この場合はWHEREの条件として値の一覧を渡すだけでよく、特に複雑なことはありません
UNNEST構文を使い取得したい列のキーを配列として渡せばよいです
UNNESTとは配列を渡し展開するための構文で、IN句と組み合わせることで配列を用いた検索が可能になります
https://cloud.google.com/spanner/docs/reference/standard-sql/query-syntax#unnest
WHERE key1 IN UNNEST ("test1", "test2", "test3")
Spannerのベストプラクティスとしてはこちらに記載があります
https://cloud.google.com/spanner/docs/sql-best-practices?hl=ja#optimize-range-lookups
キーが複数の場合
この場合は単純に値を渡すのではなく、key1、key2の組み合わせとして渡す必要があります
SpannerにはWHEREでの条件として構造体(Struct)を使用することができる方法があります
WHERE (key1, key2) IN (("aaa", "bbb"), ("ccc", "ddd"))
https://cloud.google.com/spanner/docs/reference/standard-sql/data-types#struct_type
記載の方法を使用することで簡潔にSQLを実行することが可能です
感想と次
今までDB周りを触ることがなかったですが、とても楽しかったです
また、調査のためにChatGPTが大いに役に立ちました
結構頓珍漢なことも言いますが、詳細に調べる前、大雑把な把握には役立つと思います
次はこの複数主キーを使用する方法をSpring Data Cloudで利用する場合、どのように行うのか記事にしようと思います