DynamoDBのパーティションキーでの検索につきまして

0

標題の件につきまして、

get_itemで検索する方法と、 パーテションキーをGSIに設定し、そのインデックスでqueryを用いて検索するのでは、 どちらがパフォーマンス良く検索できるでしょうか?

Sato-K
質問済み 3ヶ月前401ビュー
4回答
1
承認された回答

ドキュメントにも記載されていますが、特定の項目にのみアクセスするのであればget_itemが一番効率的な方法になります。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/SQLtoNoSQL.ReadData.html

これは、項目の物理的な場所に直接アクセスできるため、単一の項目を読み込むうえで最も効率的な方法です。

少し古いですが、以下のstackoverflowの回答が参考になると思います。
https://stackoverflow.com/questions/12241235/dynamodb-query-versus-getitem-for-single-item-retrieval-based-on-the-index

ちなみにGSIに対してget_itemは使用できないので注意してください。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/GSI.html#GSI.Reading

グ ローバルセカンダリインデックスから項目を取得するには、Query および Scan オペレーションを使用します。GetItem および BatchGetItem オペレーションは、グ ローバルセカンダリインデックスでは使用できません。

profile picture
エキスパート
回答済み 3ヶ月前
0

使用用途によると思います。
get_itemは単一の項目を取得しますが、Queryは複数個取得します。
複数個の項目を取得するのであればget_itemを何回も実行するよりもQueryを1回実行した方が速いと思います。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/SQLtoNoSQL.ReadData.html

profile picture
エキスパート
回答済み 3ヶ月前
profile picture
エキスパート
レビュー済み 3ヶ月前
0

ご回答いただきありがとうございます!

質問がよくなかったのですが、 パーティションキーのみの単一のPKとしてテーブルを定義し、 このユニークなキーをGSIに設定し、queryで取得するということを考えております。 なので、queryですが取得できる項目は1つを期待しています。

この場合ではいかがでしょうか?

Sato-K
回答済み 3ヶ月前
0

Riku_Kobayashi 様

ご回答いただきありがとうございます! 非常に助かりました!

Sato-K
回答済み 3ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン