Z mojego doświadczenia wynika, że obciążenie jest minimalne, pod warunkiem, że osoba pisząca zapytania wie, co robi i podejmuje typowe środki ostrożności, aby upewnić się, że generowane zapytania są optymalne, czy potrzebne są odpowiednie indeksy itp. Innymi słowy, wpływ bazy danych powinien być taki sam; po stronie aplikacji występuje minimalny, ale zazwyczaj nieistotny narzut.
To powiedziło ... jest jeden wyjątek od tego; jeśli pojedyncza kwerenda generuje wiele agregacji, dostawca L2S tłumaczy ją na duże zapytanie z jedną sub-kwerendą na agregat. W przypadku dużej tabeli może to mieć znaczący wpływ we/wy, ponieważ koszt we/wy bazy danych dla zapytania wzrasta o wielkość dla każdego nowego agregatu w zapytaniu.
Rozwiązaniem tego problemu jest oczywiście przeniesienie agregatów do przechowywanego procesu lub widoku. Matt Warren ma przykładowy kod dla alternatywnego dostawcy zapytań, który tłumaczy tego rodzaju zapytania w bardziej efektywny sposób.
Zasoby:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=334211
http://blogs.msdn.com/mattwar/archive/2008/07/08/linq-building-an-iqueryable-provider-part-x.aspx