0
votes

I came across with weird behavior of Azure table Storage query. I used following code to get the list of entities from Azure Table Storage

query = context.CreateQuery (DomainData.Employee.TABLE_NAME) .Where(strPredicate).Select(selectQuery));

where is context TableServiceContext, I was trying to pull Employee entity from Azure table storage, My requirement is dynamically construct predicate and Projections.

So strPredicate is a string, where it contains dynamically constructed predicate. selectQuery is projection string, where it is constructed dynamically based on User Selected Properties.

When the users selects all the properties of Employee Object, here Employee object has over 200 properties. system constructed dynamic projection string based on all properties and System takes 45 minutes to retrieve 60000 records from Azure table storage.

Whereas when i enter directly object in select projection, i.e looks like below

 query = (context.CreateQuery<DomainData.Employee>                                      (DomainData.Employee.TABLE_NAME)                                             .Where(strPredicate)

then query takes only 5 minutes to retrieve 60000 records from Azure table storage. Why is this peculiar behavior both the query are same , one with project of columns/properties other is without any projection, but Azure table storage provides same number of entity with same column property and same size of each entity why is it Azure table storage is taking too much of time in the first query why is it faster in second query. Please let me know.

1

1 Answers

0
votes

The standard advice when dealing with perceived anomalies with Windows Azure Storage is to use Fiddler to identify the actual storage operation invoked. This will quickly allow you to see what the actual differences are with the two operations.