2009-09-18 15 views
5

Se scrivo un'istruzione SQL di grandi dimensioni con molte clausole group by e così via; sarebbe molto più veloce con il normale SQL (forse una procedura memorizzata), oppure Linq lo sta solo analizzando con un'affermazione SQL molto carina e mi dà i miei risultati abbastanza velocemente?LINQ è generalmente più lento di un'istruzione SQL uguale

risposta

9

In alcuni casi si può essere in grado di sintonizzare lo SQL meglio di LINQ to SQL ... ma LINQ davvero è esegue SQL. Non sta recuperando tutti i dati nel processo e quindi durante l'elaborazione. È possibile (e dovrebbe) registrare ciò che viene generato SQL e creare un profilo che sembri sospetto.

Naturalmente, c'è un sovraccarico nel convertire la query in SQL per iniziare (che è il motivo per cui è possibile precompilarli) e poi c'è il sovraccarico di convertire i dati in oggetti e tenere traccia degli ID, ecc. Nella mia esperienza questo è di solito non un sovraccarico significativo però. Come sempre, profila il tuo codice ...

+3

Se qualcosa sulla preformance di DB sembra werid, esegui sql-profiler e controlla i tempi di esecuzione delle query. se le query sono molto lente, è necessario esaminare i metodi per modificare quella query. – AndreasN

+1

Se vuoi solo capire che cosa viene prodotto in background in sql, Linqpad (http://www.linqpad.net/) ha una funzionalità molto bella in cui, quando si esegue una query linq, non mostra solo i risultati , ma anche i comandi sql che sono stati eseguiti. – sgmoore