😎
DynamoDB と SQL のレコードの絞り方の違い
概要
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