有时在编程中经常会用到提取数据时需要从两张表中去提取,当然这样是可以用sql的链接来处理的,如果不用表连接的话,可能一些人会用下面的方法来处理。
例如表A :id,Bid,context,表B:id,name,我们在从A中提取一定量的数据后,在程序里进行处理,看下面代码:
[C#] 纯文本查看 复制代码 var list=A_bll.GetList(5000);
foreach(var model in list)
{
var info=B_bll.FindInfo(model.Bid);
var name=info.name;
//一些逻辑
}
以上代码写起来确实比较方便,但是试想如果你提取的数据很多,有5000以上的话,你就需要去访问5000+次的数据库,这样势必会造成频繁的访问数据库,数据库服务器压力就会比较大。我们看下面的提取方法。
[C#] 纯文本查看 复制代码 var list=A_bll.GetList(5000);
var Blist=B_bll.GetListByBids(list.select(l=>l.Bids));//根据bids一次性从数据库取出所有需要查询的数据
foreach(var model in list)
{
var info=Blist.FirstOrDefault(b=>b.id==model.Bid);
var name=info.name;
//一些逻辑
}
上面的代码就比较简单了,只需访问一次数据库,然后在内存中去处理A和B的链接逻辑,一个需要访问5000+次数据库,一次只需要访问1次数据库,差别就显而易见了。
|