成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何提升LINQ的查詢性能(上)

開發 后端
我們本篇文章不對談了Linq系列技術是否好,是否改用,而是告訴那些將會或者已經使用了Linq技術的朋友,如何來提升Linq2Sql查詢的性能。

自從Linq提出了之后,讓很多的開發人員一陣的狂喜,編寫代碼似乎比以前更別的方便了,特別是隨著Linq2Sql等推出來之后,開發人員感到了似乎手中有了強大的武器。同時,Linq2Sql帶來的問題不斷的出現,特別實在性能上面,這是讓很多的多性能有著高要求的應用要放棄Linq2Sql系列技術的原因,并且很多回到了以前的ADO.NET技術,追求完全的控制。

 

系列文章:

如何提高Linq查詢的性能(上)
如何提高Linq查詢的性能(下)
 

這里和大家分享一些知識。我們本篇文章不對談了Linq系列技術是否好,是否改用,而是告訴那些將會或者已經使用了Linq技術的朋友,如何來提升Linq2Sql查詢的性能。

 

在本篇文章中,我們首先會介紹Linq2Sql查詢是如何被執行的,然后我們介紹如何來編譯Linq查詢從而使得其性能提升。

本篇希望大家對Linq2Sql查詢,特別是Linq2Sql的使用有一定的經驗。

 

本篇的議題如下:

深入的查看Linq2Sql查詢的工作原理(上)

如何編寫編譯的Linq查詢(上)

性能比較(下)

結果分析(下)

 

深入的查看Linq2Sql查詢的工作原理

 

首先我們來看看下面的一個簡單的Linq查詢,這個查詢非常的簡單,就是從一個Customer表中獲取數據,這個Linq的查詢被Linq的引擎轉換為SQL語句,如下:

 

20120410110155.png

 

 

 

對于一個Linq查詢,首先,需要檢查它的語法,詞法,***產生SQL語句。這個過程可以說是非常耗時的,并且對于每個Linq查詢都要這樣做。如果我們可以將每一個Linq查詢的查詢計劃緩存的話,那么就快了。

 

其實這個原理和我們使用SQL Server一樣:把SQL Server提交到數據庫,首先執行詞法語法分析,然后生成查詢樹,然后再交給查詢優化器,生成執行計劃,然后交給執行引擎去執行,***又存儲引擎獲取數據,并且生成的執行計劃被緩存,以便重用,這樣就極大的提升了性能,更多請看這里

 

在Linq技術中,提供了一種名為編譯Linq查詢的技術。在編譯的Linq查詢中,Linq生成的執行計劃被緩存在一個靜態的類中。我們知道,靜態類是一個全局的公共資源,所以Linq查詢可以去這個靜態類中找到相應的執行計劃,而不是每次都去解析,如下:

 

20120410110237.png

 

從上圖中可以看到:從Linq的查詢到***的執行解析成為SQL去執行,需要經歷四個步驟,如果沒有緩存Linq查詢的執行計劃,那么其實就是有5個步驟的,如下:

 

20120410110310.png

 

 

如何編寫編譯的Linq查詢

 

既然已經知道了編譯查詢可以提升性能,那么我們就來看看具體的如何操作。

首先就要導入System.Data.Linq命名空間。

然后,為了避免一上來就丟上一大堆代碼使得朋友們不舒服,我們就一點點的來進行:

    1. 首先定義一個靜態的類:clsCompiledQuery
    2. 然后添加一個公共的靜態方法指針變量,簽名如下:

20120410110414.png

 

那么對于這個方法:

a. 這個方法的參數要首先接受一個DataContext對象

b. 這個方法可以隨后接受一個或者多個輸入參數,現在在我們的例子中,我們就接受了一個string類型的輸入參數,因為我們的上面的customer的查詢只是傳入了一個txtCustomer.Text的值。

c. 我們需要定義類型為IQueryable的輸出參數。

 

 

3. 定義好了方法指針的變量之后,我們就可以調用CompiledQuery類的方法Compiled,并且將DataContext與一個string作為輸入參數,如下:

 

20120410110555.png

 

 

4. 整個方法指針的定義完整代碼如下:

20120410110637.png

5.整個靜態類的定義如下:

20120410110714.png

 

上面的準備工作做好了之后,我們就開始使用。可以在需要的地方進行如下的調用:

 

20120410110751.png

原文鏈接:http://www.cnblogs.com/yanyangtian/archive/2012/04/12/2443924.html

【編輯推薦】

  1. Linq to xml操作XML
  2. XML之父解讀未來互聯網"游戲化"的三個真諦
  3. Ajax和Web服務數據格式:XML SOAP HTML
  4. 超強解析XML——簡單直接的來
  5. 解析PHP中的XML數據
責任編輯:彭凡 來源: 博客園
相關推薦

2017-03-13 09:50:00

HadoopHive

2023-05-25 20:06:17

Linux游戲性能

2009-09-17 09:11:26

LINQ查詢

2011-11-30 21:59:41

ibmdwDojo

2009-09-17 09:45:36

LINQ查詢語句

2021-12-02 07:02:16

API性能設計

2009-09-14 18:53:27

LINQ查詢

2009-09-14 18:41:59

LINQ查詢

2009-09-16 17:33:16

LINQ TO SQL

2009-09-07 22:29:04

LINQ組合查詢

2024-09-19 08:09:37

MySQL索引數據庫

2023-12-14 12:56:00

MongoDB數據庫優化

2019-06-11 15:25:03

JSON性能前端

2020-12-03 08:00:00

SQL數據庫MySQL

2023-11-14 18:04:26

SQL語句性能

2009-09-15 10:35:11

linq多表查詢

2009-09-15 10:46:04

LINQ to SQL

2009-09-16 10:38:43

LINQ查詢

2009-09-17 13:15:20

LINQ查詢

2009-09-16 10:08:06

LINQ查詢
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品一 | www国产亚洲精品 | 国产福利在线 | 欧美 日韩 综合 | 日日操夜夜操天天操 | 精品视频一区二区三区在线观看 | 欧美国产亚洲一区二区 | 日韩视频三区 | 视频在线日韩 | 中文字幕亚洲欧美日韩在线不卡 | 日韩视频免费在线 | 欧美jizzhd精品欧美巨大免费 | 毛片黄片免费看 | 成在线人视频免费视频 | 玖玖综合网 | 伦理午夜电影免费观看 | 插插插干干干 | 精久久 | 日韩中文字幕久久 | 日韩中文字幕一区 | 一区二区三区 在线 | 国产欧美一区二区三区日本久久久 | 成年人视频在线免费观看 | 久久久久久久一区 | 日韩视频免费在线 | 亚洲字幕在线观看 | 国产精品国产精品国产专区不片 | 高清视频一区二区三区 | 成人免费一区二区 | 福利一区在线观看 | 国产四虎 | 亚洲va欧美va天堂v国产综合 | 91精品国产综合久久久亚洲 | 国产精品久久久久久久白浊 | 久久久久国产一区二区三区 | 欧美国产精品一区二区 | 天天摸天天干 | 精品久久一区 | 欧美日韩不卡 | 欧美成人一级 | 人人做人人澡人人爽欧美 |