Amazon dynamodb 在分区键上使用IN运算符查询dynamoDB

Amazon dynamodb 在分区键上使用IN运算符查询dynamoDB,amazon-dynamodb,dynamodb-queries,Amazon Dynamodb,Dynamodb Queries,我有一个名为products的表。它的模式是 字符串类型的CustomerNumber哈希键 字符串类型的ProductID范围键 我想查询类似于 SELECT * FROM products WHERE CustomerNumber IN ("cust123","cust234"). 如何实现 很少观察到- DynamoDBQueryExpression将只查询索引/哈希键,而不是像上面示例中那样查询哈希键列表 此外,DynamoDBQueryExpression不支持IN、OR运算符 此

我有一个名为products的表。它的模式是

字符串类型的CustomerNumber哈希键 字符串类型的ProductID范围键 我想查询类似于

SELECT * FROM products WHERE CustomerNumber IN ("cust123","cust234"). 
如何实现

很少观察到-

DynamoDBQueryExpression将只查询索引/哈希键,而不是像上面示例中那样查询哈希键列表

此外,DynamoDBQueryExpression不支持IN、OR运算符

此外,BatchLoad在我的情况下仅使用主键customerNumber 和productIDrecord返回一批记录

另外,我不想扫描表并对其应用过滤器

同时在customerNumber上创建GSI并查询它也不起作用


而不是选择*where partitionkey IN。。。您将执行一个单独的查询,相当于select*where partitionkey=。。。对于您的条件中的每个值。它会花费你在网络上额外的几次往返,但仅此而已;如果您关心速度,那么可以并行执行各个查询

而不是选择*where partitionkey IN。。。您将执行一个单独的查询,相当于select*where partitionkey=。。。对于您的条件中的每个值。它会花费你在网络上额外的几次往返,但仅此而已;如果您关心速度,那么可以并行执行各个查询

是的,谢谢你回答了这个问题。然而,您建议如何并行运行查询,现在我正在java中使用parallelstreams。parallelstreams是一种方法。很难推荐最好的方法,因为涉及的因素太多了,例如内存、cpu内核、系统上的其他负载。您应该完成应用程序的构建,然后进行一些性能测试/实验,看看什么是最适合您的选择。哦,记住,在确保正确性之前不要进行优化。是的,谢谢你回答了这个问题。然而,您建议如何并行运行查询,现在我正在java中使用parallelstreams。parallelstreams是一种方法。很难推荐最好的方法,因为涉及的因素太多了,例如内存、cpu内核、系统上的其他负载。您应该完成应用程序的构建,然后进行一些性能测试/实验,看看什么是最适合您的选择。哦,记住,在确保正确性之前不要进行优化。