读书人

请教为何用了CompiledQuery.Compile之

发布时间: 2013-09-08 15:21:21 作者: rapoo

请问为何用了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 循环去执行查询数据库了 ?

读书人网 >.NET

热点推荐