Linq To Nhibernate 效能最佳化(入門級)

來源:互聯網
上載者:User

標籤:

      最近都是在用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方法是通用的,所以大家最好用這個來判斷。

 本部落格只是把自己的拙見分享給大家,如有不對,歡迎指出。

  

 

Linq To Nhibernate 效能最佳化(入門級)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.