我正在编写azure应用程序。我的问题涉及查询特定实体的azure表。
应用程序存储用户使用的单词统计信息。在表中,partitionkey是语言,行键是单词。
我需要查询多个单词。为了加快这个过程,我想在一个查询中提取所有相关实体。
我知道如何“批量插入”具有相同分区键的实体组。 如何使用相同的分区键但不同的rowkey查询50个不同的实体。
是否有可能将查询指定为字符串?
此致
答案 0 :(得分:1)
您可以在$filter
中指定最多15个匹配项,因此如果您沿着该路线走下去,则基本上只有15个特定的行键。注意:这将导致分区扫描。查询的细节在this article。
this StackOverflow question及相关答案中有更多信息。
答案 1 :(得分:1)
但是一个查询不一定能加快速度。发出5个查询,每个查询10个单词(可能并行)并合并结果。
答案 2 :(得分:1)
这不是您提出的问题,但如果您反转RowKey和PartitionKey,您可能会发现从这个特定查询中获得更好的性能。我猜测一种语言中可能会有很多单词,所以这意味着你将拥有相当大的分区。如果您尝试按照其他人的建议并行查询(这是一个好主意),所有这些查询都将使用您当前的密钥计划命中相同的分区。
如果您确实反转了密钥,但这意味着获取特定语言的单词列表将非常低效。
答案 3 :(得分:0)
我不知道有任何简单的方法,但你可以使用一些动态的LINQ查询库。
您可能想看看这个问题:
Parsing a string C# LINQ expression
这些图书馆:
Dynamically generate a LINQ query with a custom property
Invent your own Dynamic LINQ parser
本教程:
Dynamic LINQ (Part 1: Using the LINQ Dynamic Query Library)