【发布时间】:2013-10-15 21:09:35
【问题描述】:
我正在使用 PHP 从分区中检索所有行。我正在使用下面的方法来获取所有行
http://www.windowsazure.com/en-us/develop/php/how-to-guides/table-service/#RetEntitiesInPartition
面临一个独特的问题:如果我使用一个分区结果返回,使用多个带有 OR 子句的分区不会返回任何结果。
在我看来有两个问题:
在其他列上使用 OR 条件和过滤器进行分区导致某些事情变得精神错乱。
PHP SDK(2.0 版)存在问题
任何帮助将不胜感激,
-
查询有一个正确使用的
Partition列。例如,如果我正在运行此查询(针对两个分区 10 行)( cid eq '18831') and ( (PartitionKey eq '2013100606') or (PartitionKey eq '2013100607') )使用 PHP 脚本的 OR 子句的 partitionkey 有多个值时没有响应。使用存储资源管理器应用程序似乎需要超过 5 秒才能从两个分区中提取 10 行。 (我只有 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>
【问题讨论】:
-
我发现这是分区值的问题,如果查询具有超过 1 个分区值和 OR 子句,脚本需要很长时间才能执行超过 5 秒,即使是 10 行。 REST API 不返回执行时间超过 5 秒的记录。
-
我也更新了问题。
-
尝试反转查询,看看是否有任何不同 -
( (PartitionKey eq '2013100606') or (PartitionKey eq '2013100607') ) and ( cid eq '18831')。 -
做到了,但同样没有 PHP 脚本返回结果。即使我使用存储资源管理器软件运行,查询也需要 10 多秒才能运行。
标签: php azure azure-storage azure-table-storage