首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请教为何用了CompiledQuery.Compile之后速度反而慢了许多呢

2013-09-08 
请问为何用了CompiledQuery.Compile之后速度反而慢了许多呢?本帖最后由 romanchaos 于 2013-09-04 11:06:1

请问为何用了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));


for (int i = 0; i < 10000; i++)
{
    var lstSku2 = query(dataContext);
}
TimeSpan ts2 = DateTime.Now - dt2;
strB.Append(ts2 + "\n");


却需要耗时17.527秒……这也相差太多了……是不是我的写法不对?
[解决办法]
第一种 是 延迟查询,在 for循环中,其实 没有执行查询数据库。

第二种 没用过,是不是 for 循环去执行查询数据库了 ?

热点排行