2010-12-11 16 views
5

Tengo un procedimiento de búsqueda almacenado que es mi cuello de botella de rendimiento.El procedimiento almacenado llamado desde C# se ejecuta 6 veces más que desde SQL Management studio

Para tener control sobre lo que sucedió, agregué el registro para todos los parámetros y también el tiempo de ejecución en SP.

me di cuenta, que cuando llamo SP de vez Server Management Studio ejecución de Microsoft SQL es 1,3-1,6 segundos, pero cuando lo llamo desde C#, se tarda 6-8 secods (!!!)

Parameters               | Time (ms) 
"tb *"TreeType:259Parents:212fL:13;14fV:0;lcid:2057min:0max:10sort:-1 | 6406  
"tb *"TreeType:259Parents:212fL:13;14fV:0;lcid:2057min:0max:10sort:-1 | 1346  

SP se llama con LINQ. La configuración de inicio de sesión es la misma. SP utiliza la búsqueda de texto completo

¿Qué podría causar esto?

+0

No estoy seguro con respecto al sistema de caché de Microsoft SQL. Intente ejecutar el procedimiento almacenado desde Management Studio y luego desde C#. ¿Los resultados difieren de los actuales? – Anton

+0

@Anton: Puedo obtener los mismos resultados, no dependiendo de la orden de las llamadas. En realidad, esta lista está ordenada por id desc, por lo que la última solicitud es la última. – st78

+0

¿Intentó utilizar 'SqlCommand' en lugar de LINQ? Puede usar el método 'Prepare' adicionalmente. ¿Usas SQL Server local? ¿Qué datos devuelve el procedimiento almacenado? – Oleg

Respuesta

2

Para localizar estos problemas, la mejor herramienta es el Analizador de SQL, que registra la llamada exacta a la base de datos.

Para mí la diferencia fue con el valor no pasado por la muestra de SQL, que fue sustituido por '' y el valor nulo pasó por C#.

Cuestiones relacionadas