我複製從SQL事件探查LINQ內置SQL查詢這裏是很煩人一下:Linq查詢超級慢?
它的前綴選擇..columnNames ..從(選擇..columnNames ..從(選擇視圖的CNAME) 點評:2條SELECT語句這裏是不必要的
此查詢需要14秒,執行
當我刪除的最後一行,包含類似的@p_ LINQ _0所有PARAMS。 ..並在條件中填寫參數值並執行完全相同的動態查詢,這需要1秒或更少的時間。否則,這個查詢在從sql studio執行時需要0秒。這是linq的跛腳。
我可能會移動到這個存儲過程,但我很害怕使用LINQ現在
經過進一步研究中,我發現:
查詢1:
exec sp_executesql N'SELECT * from TableView WHERE Id = @Id', N'@Id int', @Id = 1
查詢2 :
exec sp_executesql N'SELECT * from TableView WHERE Id = 1'
查詢1需要12秒,查詢2需要0秒。這解釋了爲什麼linq查詢很慢。所以,現在,這是否意味着我應該總是使用存儲過程還是缺少一些東西?
爲什麼不能微軟修復Linq查詢建築,難的是如何解析該字符串和替換,而不是通過那些PARAMS作爲參數傳遞給sp_executesql的
你在說什麼查詢? – Joren 2011-03-25 18:36:17
這裏有問題嗎? – forsvarir 2011-03-25 18:36:20
沒有看到LINQ查詢或生成的SQL,很難給你任何幫助。 – 2011-03-25 18:36:37