😎

DynamoDB と SQL のレコードの絞り方の違い

2024/05/05に公開

概要

SQL と同じように DynamoDB で LIMIT を使うと、クエリの検索条件によっては結果が異なる場合があるのでメモ

SQL クエリの評価順

FROM -> ON -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT

SQL は上記の順番でクエリが評価される。 LIMIT は最後に評価されるので、検索条件に合わないレコードが取得されることはない。

DynamoDB クエリの評価順

検索条件が key_condition_expression の場合、レコードをフィルタリング(WHERE)した後に LIMIT が評価されるので SQL と同じ挙動になる。

但し、filter_expression の場合、取得するレコード数に対して LIMIT が評価されその後にフィルタリングされるので条件に合っていないレコードが返ってくる可能性がある。

Discussion