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

0

標題の件につきまして、

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

asked 4 months ago429 views
4 Answers
1
Accepted Answer

ドキュメントにも記載されていますが、特定の項目にのみアクセスするのであれば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
EXPERT
answered 4 months ago
0

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

profile picture
EXPERT
answered 4 months ago
profile picture
EXPERT
reviewed 4 months ago
0

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

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

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

answered 4 months ago
0

Riku_Kobayashi 様

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

answered 4 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions