DynamoDB query() versus getItem() for single-item retrieval based on the index
If I'm retrieving a single item from my table based on the indexed hash key, is there a performance difference between query()
or getItem()
?
getItem
will be faster
getItem
retrieve via hash and range key is a 1:1 fit, the time it takes (hence performance) to retrieve it is limited by the hash and sharding internally.
Query results in a search on "all" range keys. It adds computational work, thus considered slower.
In Amazon's DynamoDB, your performances are guaranteed whatever the access method. (you pay for it).
There may be a couple a milliseconds differences on the DynamoDB servers themselves as suggested by Chen Harel but these are negligible because of the HTTP request RTT.
This said, it's a good practice to issue a GET
instead of QUERY
when you have enough informations to do so.
As suggested by aws employee in one of the discussion, I quote:
The latency of GetItem vs Query with limit=1 will be equivalent.
AWS discussion link