2011-05-08 4 views
0

申し訳ありませんが、これはちょっとばかな質問のようですが、Windows Azureテーブルからデータを「選択」したいと思っています。私は、次のことを試してみました、それが働いた:Windows Azure Tablestorage行の任意の属性をクエリできますか?

from question in _statusTable.GetAll() 
         where status.RowKey.StartsWith(name) 

私は、この1つは私に何も与えなかっ

from question in _statusTable.GetAll() 
         where status.Description.StartsWith(name) 

を試してみました。 RowKeyまたはPartitionKeyの一部ではない行を照会できるかどうか、誰に説明することができますか?

答えて

0

GetAll()は何をしますか? StartsWithはWAテーブルではサポートされていないので、GetAllはすべてのデータをローカルにプルすると仮定しているため、クエリはメモリ内のオブジェクトに対して行われます。もしそうなら、これはWindows Azureとは関係がないので、あなたのデータが期待通りに見えるかどうかを見てみましょう。

3

どのようなプロパティでもクエリできますが、サポートされるクエリの種類は限られています。 StartsWithはサポートされていません。また、PartitionKeyとRowKeyでクエリを実行していない場合は、理解するために重要なパフォーマンス上の問題がいくつかあります。常にほとんどのクエリ結果にこれらを含めることができるContinuationTokenを認識する必要があります。

あなたはRESTのAPIを見て、サポートされるクエリの種類見ることができます:http://msdn.microsoft.com/en-us/library/dd894031.aspxを - それはかなり制限されます(ただし、結果として速い)です:

  • イコール
  • 演算子:GreaterThan
  • GreaterThanOrEqual
  • LessThan
  • LessThanOrEqual
  • NotEqual

あなたがして、より多くのことを行う必要がある場合:

    あなたが動作します GreaterThanOrEqualTo("Fred") and LessThan("Free")
  • またはクライアント側のフィルタリングを行うことによってStartsWith("Fred")のようなものを模倣することができます
  • - それはストレージからすべての行を引き戻すことを意味これは膨大なデータになる可能性があり、計算上およびトランザクション上のコストがかかる可能性があります。
関連する問題