Linq To Nhibernate 性能优化(入门级)

      最近都是在用Nhibernate和数据库打交道,说实话的,我觉得Nhibernate比Ado.Net更好用,但是在对于一些复杂的查询Nhibernate还是比不上Ado.Net。废话不多说了,下面讲讲Linq To Nhibernate的性能优化。

     第一点:应该要分清楚当前代码是在数据库上执行,还是在内存中执行(或者什么时候应该在数据库上做,什么时候应该在内存做)


      我们在在做查询的时候,常见的使用方法

   

上面是使用了Iqueryable接口的,它会把数据先筛完了之后,再返回给我们

 

这个在数据库里呢,直接是把整个列表返回的,因为用了ToList方法。

    所以,在做查询的时候,什么操作要放到数据库层面做,什么操作要放到内存上做,这些都是我们要考虑的。平时这些都应该好好注意这些细节部分,就比如一个系统每年数据量只增加两千条,用多了两年这个系统就报废了,因为查询速度会随着数据量越来越大而越来越慢,而我们能做的就是把这些细节处理好。只要把序列返回的IEnumerable的话呢,这个就是linq to object,就会把数据库的数据,全部拿过来,放到内存中,在操作。所以能够让数据库多帮我们做一些操作,就尽量多做。一般情况下:一般都是在最后ToList的。

   第二点:Count和Any来判断集合中是否存在某个序列。

 用Count>0大于零来判断序列中是否含有某个元素对于 Array、List<T>或Collection<T>这些都不会存在问题。但是在某些情况下,就会有很大的问题。Any方法是通用的,所以大家最好用这个来判断。

 本博客只是把自己的拙见分享给大家,如有不对,欢迎指出。

  

 

转载于:https://www.cnblogs.com/gdouzz/p/5904376.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值