2009-04-17 31 views
2

嘿那裏我得到了我的代碼有問題,我比較了數據庫標準SQL查詢比LINQ的2 SQL快得多

  1. 標準SQL查詢的執行查詢的三種方式(從*選擇...)
  2. LINQ查詢
  3. 預編譯LinqQuery(CompiledQuery)

現在,我得到的結果是預編譯LingQuery比LINQ查詢速度快,但更有趣北京時間5倍標準SQL曲兒y大約比預編譯的LinqQuery快10倍。我的查詢運行的表是一個簡單的表,與其他表無關。

讓表格變得有趣的事實是它由5列組成,這5列代表所有主鍵的意思。所有列一起是唯一的,所以表中沒有看起來像另一個的行。所有列都被編入索引。

有沒有人對LinQ有什麼問題有所瞭解?

隨着親切的問候

塞巴斯蒂安

回答

2

你看過linq生成的實際查詢嗎?比較那些與你的SQL查詢可能會給你一些答案。

您可以使用SQL事件探查器或偵聽linq datacontext的Out屬性來執行此操作嗎?您可以在控制檯應用程序中這樣做:

DataContext ctx = new ...; 
ctx.Log = Console.Out; 
//Now execute the linq query, and the query will be output to the console. 
+0

與我從查詢中複製查詢完全相同datacontext並用它在我的查詢中使用SQL – 2009-04-17 14:03:36

+0

奇怪...查詢是非常非常複雜(從查詢樹創建查詢的過程非常複雜),而是在服務器上快速執行?這可能會扭曲結果... – 2009-04-17 14:11:55

1

您如何測量?您是使用所有查詢結果還是僅執行查詢? (例如,LINQ很可能會爲您獲取結果。)

第二次執行查詢時是否發生這種情況,或者您只是測量第一次執行所花費的時間?

+0

是的,我們正在使用我們提取的所有結果,不僅僅是執行查詢,而且每次都會發生,我們測量所有查詢的時間不僅僅針對單個查詢 – 2009-04-17 14:02:49

2

只要確保您的查詢沒有被緩存,就會導致結果偏斜。