MSSQL PetaPoco在查询优化中的大位置

时间:2017-06-20 15:26:50

标签: sql-server orm petapoco

我有一个使用WhereIn的PetaPoco查询。查询如下:

        var prodAttrCollForVariantSql = new Sql();
        prodAttrCollForVariantSql.Select("*")
            .From<ProductVariant2ProductAttributeDto>()
            .InnerJoin<ProductAttributeDto>()
            .On<ProductVariant2ProductAttributeDto, ProductAttributeDto>(left => left.ProductAttributeKey, right => right.Key)
            .WhereIn<ProductVariant2ProductAttributeDto>(x => x.ProductVariantKey, variantKeys);

问题是,&#39; variantKeys&#39;是一个列表,可以有100到5000+的任何东西。

如何在上述查询中改进其中的性能和潜在限制?

1 个答案:

答案 0 :(得分:0)

SQL Server有2100个参数限制。

要解决此问题,只需将列表拆分为2000个项目。 例如:

var Result = new List<Whatever>();
for (int i = 0; i < variantKeys.Count(); i+= 2000) {
   Result.AddRange(db.Fetch<Whatever>("SELECT * FROM Whatever WHERE ID IN (@0)", variantKeys.Skip(i).Take(2000)));
}