我遇到了Azure表存储查询的奇怪行为。我使用以下代码从Azure表存储
获取实体列表query = context.CreateQuery(DomainData.Employee.TABLE_NAME).Where(strPredicate).Select(selectQuery));
其中是上下文TableServiceContext,我试图从Azure表存储中提取Employee实体,我的要求是动态构造谓词和预测。
所以strPredicate是一个字符串,它包含动态构造的谓词。 selectQuery是投影字符串,它是根据用户选择的属性动态构造的。
当用户选择Employee Object的所有属性时,此处Employee对象具有200多个属性。系统根据所有属性构建动态投影字符串,系统需要45分钟从Azure表存储中检索60000条记录。
然而,当我在选择投影中直接输入对象时,即如下所示
query = (context.CreateQuery<DomainData.Employee> (DomainData.Employee.TABLE_NAME) .Where(strPredicate)
然后查询只需5分钟即可从Azure表存储中检索60000条记录。为什么这个特殊的行为都是查询相同的,一个列/属性项目没有任何投影,但Azure表存储提供相同数量的实体具有相同的列属性和相同大小的每个实体为什么Azure表存储是在第一个查询中花费太多时间为什么在第二个查询中它更快。请告诉我。