AWS DynamoDB扫描

时间:2018-05-14 04:05:44

标签: amazon-dynamodb

我在DynamoDB中的Query Vs Scan上引用了多个帖子。几乎所有提到的帖子都比较慢,因为它读取整个表或索引。 我想知道Scan优于Query的用例。 如果有的话可以分享吗?

2 个答案:

答案 0 :(得分:2)

有几种使用情况,其中“扫描”优先于“查询”。

  • 如果您有迁移过程,您需要访问DynamoDB表中的所有项目。
  • 根据非索引属性查找项目(由于扫描费用昂贵,因此不常见)。

答案 1 :(得分:2)

阿山的回答是正确的。添加一些额外的描述和几个例子:

  

根据非索引属性查找项目(自此以后应该不常见)   扫描很昂贵。)

您可能无法为属性编制索引。

低基数

想象一下每个项目代表一个人的表格。您可能想要一个返回所有女性的操作。由于基数较低,布尔性别属性会产生较差的分区键,因此您几乎肯定不会对此属性进行分区。在这种情况下,扫描是合适的。一个好的经验法则是,如果一个操作返回表中很大比例的项目,扫描可能就好了。

很少使用

假设桌上的人是员工,每月一次为每个人订购披萨。您的餐桌上包含每个人最喜欢的比萨饼,因此在您订购之前,您想知道哪些员工将拥有玛格丽塔。你每月只做一次。仅为此目的创建索引将是昂贵的,因为您必须配置索引。在这种情况下,进行扫描可能会更好。