【问题标题】:Azure Table Storage equivalent of SQL "IN"相当于 SQL“IN”的 Azure 表存储
【发布时间】:2015-03-08 15:12:30
【问题描述】:

在 SQL Server 中,我可以执行如下查询:

SELECT *
FROM Products
WHERE ProductId IN (1, 24, 9224)

我怎样才能对 Azure 表存储做同样的事情?如果不支持IN-type 运算符,那么基于非连续 ID 值检索数据子集(例如 1,000,000 条中的 100 条记录)的标准方法是什么?

【问题讨论】:

    标签: azure azure-table-storage


    【解决方案1】:

    我也在为同样的事情苦苦挣扎,但我找到了解决方法。希望它可以帮助其他人。 我们可以使用 join 来实现这个要求。

    var a = from prods in products
            join pId in productIds on prods.productId equals pId
            select prods;
    

    得到了这种方法here

    【讨论】:

      【解决方案2】:

      没有。

      很遗憾,Table Storage 不支持IN 或其他Contains 类型的查询运算符。

      请看Query Operators Supported for the Table Service

      【讨论】:

      • 是的,我看到了那篇文章:/。如果您对表存储有任何经验,您会知道处理此问题的典型方法吗?
      • 虽然 Brendan 是正确的,IN 子句本身不受支持,但您可以使用 OR 查询来实现相同的目的。像(ProductId eq 1) or (ProductId eq 24) or (ProductId eq 9224) 这样的东西。如果您没有在查询中使用PartitionKey,请注意可能的表扫描。 HTH。
      • 重要的是要注意 OR 查询通常会导致表扫描,即使您还有主键也是如此。最好并行触发多个查询。
      • @Frans 很高兴知道这一点。这部分是我所追求的——是否有最佳实践(在这种情况下似乎是触发多个请求)。谢谢。
      • “请注意,在 $filter 字符串中不允许超过 15 个离散比较”根据本文https://docs.microsoft.com/en-us/rest/api/storageservices/querying-tables-and-entities#supported-comparison-operators
      猜你喜欢
      • 2013-01-03
      • 2012-02-11
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      • 1970-01-01
      相关资源
      最近更新 更多