日期:2014-05-20  浏览次数:20724 次

请问为何用了CompiledQuery.Compile之后速度反而慢了许多呢?
本帖最后由 romanchaos 于 2013-09-04 11:06:14 编辑
现有Sku和SkuInfo两张一对多的表,Sku为主表
第一种写法:

DateTime dt1 = DateTime.Now;
for (int i = 0; i < 10000; i++)
{
    var lstSku = (from sku in dataContext.SKU
                  join skuinfo in dataContext.SKUInfo on sku.Id equals skuinfo.SKUID
                  where sku.Uid == 2 && skuinfo.LID == 1
                  select new { skuid = sku.Id, sku = sku.SKU1, info = skuinfo.Title }).Skip(5).Take(2);
}
TimeSpan ts1 = DateTime.Now - dt1;

耗时1.729秒左右
第二种写法:

DateTime dt2 = DateTime.Now; 
var query = CompiledQuery.Compile((DataClasses1DataContext dataContextTest) => (from sku in dataContextTest.SKU
                                                                                    join skuinfo in dataContextTest.SKUInfo on sku.Id equals skuinfo.SKUID
                                                                                    where sku.Uid == 2 && skuinfo.LID == 1
                                                                                    select new { skuid = sku.Id, sku = sku.SKU1, info = skuinfo.Title }).Skip(5).Take(2));