2009-09-18 31 views
5

Si escribo una instrucción SQL grande con muchas cláusulas group by y así sucesivamente; ¿Sería mucho más rápido con SQL normal (tal vez un procedimiento almacenado), o Linq solo lo está analizando en una muy buena declaración de SQL y me da mis resultados bastante rápido?Es LINQ generalmente más lento que una instrucción SQL igual

Respuesta

9

En algunos casos es posible que ser capaz de sintonizar el SQL mejor que LINQ a SQL ... pero LINQ realmente es SQL corriendo. No está obteniendo todos los datos en el proceso y luego haciendo el procesamiento. Puede (y debe) registrar qué SQL se está generando y hacer un perfil de todo lo que parezca sospechoso.

Por supuesto, existe la sobrecarga de convertir la consulta en SQL para empezar (por lo que es posible precompilarlos) y luego está la sobrecarga de convertir los datos en objetos, y hacer un seguimiento de los ID, etc. . En mi experiencia esto es generalmente sin embargo, no es una sobrecarga significativa. Como siempre, perfile su código ...

+3

Si algo sobre el rendimiento de DB parece werid, ejecute sql-profiler y mire los tiempos de ejecución de las consultas. si las consultas son muy lentas, debe buscar los métodos para cambiar esa consulta. – AndreasN

+1

Si solo quiere entender qué sql se está produciendo en segundo plano, Linqpad (http://www.linqpad.net/) tiene una característica muy agradable en la que, cuando ejecuta una consulta de linq, no solo le muestra los resultados , pero también los comandos sql que se ejecutaron. – sgmoore

Cuestiones relacionadas