PHP Azure表存储&x2B;时间到

PHP Azure表存储&x2B;时间到,php,azure,azure-storage,azure-table-storage,Php,Azure,Azure Storage,Azure Table Storage,我正在使用PHP从分区中检索所有行。我使用下面的方法获取所有行 面临一个独特的问题:如果使用一个分区返回结果,则使用多个带有OR子句的分区不会返回结果 在我看来,有两个问题: 使用或条件进行分区,并在另一列上进行筛选,从而导致某些内容变为精神状态 PHP SDK(版本2.0)存在问题 我们将非常感谢您的帮助 查询有一个正确使用的分区列。e、 g如果运行此查询(针对两个分区的10行) 当partitionkey具有多个值且使用PHP脚本的OR子句时,没有响应。使用storage explorer

我正在使用PHP从分区中检索所有行。我使用下面的方法获取所有行

面临一个独特的问题:如果使用一个分区返回结果,则使用多个带有OR子句的分区不会返回结果

在我看来,有两个问题:

  • 使用或条件进行分区,并在另一列上进行筛选,从而导致某些内容变为精神状态

  • PHP SDK(版本2.0)存在问题

  • 我们将非常感谢您的帮助

  • 查询有一个正确使用的
    分区
    列。e、 g如果运行此查询(针对两个分区的10行)

    当partitionkey具有多个值且使用PHP脚本的OR子句时,没有响应。使用storage explorer应用程序从两个分区提取10行似乎需要5秒钟以上的时间。(我只有10行,两个分区中没有其他数据)

  • 如果我只访问一个分区,它将返回行

    ( cid eq '18831') and ( (PartitionKey eq '2013100607') )  // Works fine
    
    每个分区中有10行,如果我访问单个分区值,它就可以正常工作

    另外请注意,我正在使用expect100Continue并关闭了Nagle

          <servicePointManager expect100Continue="false" useNagleAlgorithm="false"/> 
        </settings> 
    <connectionManagement> 
          <add address = "*" maxconnection = "48" /> 
        </connectionManagement>
    

    根据Microsoft Azure存储团队的博文-(向下滚动到文章第4点的
    查询部分),涉及
    的查询未优化,将导致全表扫描。您可能因此而遇到问题

    您可能希望更改查询以避免这种情况。您可以尝试以下几点:

    ((PartitionKey ge '2013100606') and (PartitionKey le '2013100607')) and (cid eq '18831')
    
    (PartitionKey eq '2013100606' and cid eq '18831') or (PartitionKey eq '2013100607' and cid eq '18831')
    

    看看是否做了这些帮助。与第二个查询不同,您可以并行启动两个单独的查询。

    我发现这可能是分区值的问题,如果查询具有超过1个带有OR子句的分区值,则脚本需要很长时间才能执行超过5秒,即使是10行。REST API没有返回执行时间超过5秒的记录。我也更新了问题。请尝试反转查询,看看这是否有任何区别-
    ((PartitionKey eq'2013100606')或(PartitionKey eq'2013100607'))和(cid eq'18831')
    。这样做了,但PHP脚本没有返回相同的结果。即使我使用Storage explorer软件运行,查询也需要10秒以上的时间运行。
    ((PartitionKey ge '2013100606') and (PartitionKey le '2013100607')) and (cid eq '18831')
    
    (PartitionKey eq '2013100606' and cid eq '18831') or (PartitionKey eq '2013100607' and cid eq '18831')