Windows Azureテーブルストレージで、次のクエリを実行しています。
CloudTableClient ctc=TableStorage.getTableClient();
String q1=TableQuery.generateFilterCondition(TableConstants.PARTITION_KEY, QueryComparisons.EQUAL, Long.toHexString(partitionId));
TableQuery<Actividad> rangeQuery=TableQuery.from(tableName, Actividad.class).where(q1).take(2);
int e=0;
for(Actividad ac:ctc.execute(query)){
e++;
}
System.out.println(e);
しかし、take(2)で指定された上位2つだけでなく、パーティション上のすべての行を取得しています。
なにか提案を?
smarxに答える:
Wiresharkを使用してhttpリクエストを確認します。
最初のリクエストは次のとおりです。
GET /actividadreciente?$filter=PartitionKey%20eq%20%2717%27&$top=2&timeout=60
サービスからの応答があり、その後、多くの要求が行われます。
GET /actividadreciente? $filter=PartitionKey%20eq%20%2717%27&$top=2&NextRowKey=1%2124%21RkZGRkZFQzY2REYzMTA3Mw--&timeout=60&NextPartitionKey=1%214%21MTc-
GET /actividadreciente?$filter=PartitionKey%20eq%20%2717%27&$top=2&NextRowKey=1%2124%21RkZGRkZFQzY3Mjk2MEZEOA--&timeout=60&NextPartitionKey=1%214%21MTc-
GET /actividadreciente?$filter=PartitionKey%20eq%20%2717%27&$top=2&NextRowKey=1%2124%21RkZGRkZFQzY3Mjk5MzVGOQ--&timeout=60&NextPartitionKey=1%214%21MTc-
等々。