Rendimiento función t-sql según paso parámetros
Publicado por Fernando Izquierdo (2 intervenciones) el 29/01/2016 11:59:40
Hola;
Tengo una consulta de sql server que llama a una función.
Dependiendo de cómo le paso los parámetros tiene un rendimiento u otro. Me explico con un ejemplo muy muy simplificado:
Tengo una tabla con dos campos: campo1 nvarchar(255), campo2 datetime
Esto tarda alrededor de 1 minuto en la consulta real.
Si la consulta la hago de esta otra forma tarda alrededor de 13 segundos:
La diferencia está sólo en los parámetros de la función.
He probado a simplificar la función hasta el punto de retornar siempre un 1 y el rendimiento es similar (peor en la primera opción)
¿Alguien sabe por qué puede pasar esto, y cómo solucionarlo? Por lógica de la consulta necesito la primera opción
Gracias por anticipado,
Fernando Izquierdo
Tengo una consulta de sql server que llama a una función.
Dependiendo de cómo le paso los parámetros tiene un rendimiento u otro. Me explico con un ejemplo muy muy simplificado:
Tengo una tabla con dos campos: campo1 nvarchar(255), campo2 datetime
1
2
3
SELECT campo1, campo2
FROM tabla t
WHERE dbo.funcion(t.campo1, t.campo2) = 1
Esto tarda alrededor de 1 minuto en la consulta real.
Si la consulta la hago de esta otra forma tarda alrededor de 13 segundos:
1
2
3
4
5
6
7
8
DECLARE @c1 nvarchar(255)
SET @c1=’PRUEBA’
DECLARE @c2 datetime
SET @c2=’29/01/2016’
SELECT campo1, campo2
FROM tabla t
WHERE dbo.funcion(@c1, @c2) = 1
La diferencia está sólo en los parámetros de la función.
He probado a simplificar la función hasta el punto de retornar siempre un 1 y el rendimiento es similar (peor en la primera opción)
¿Alguien sabe por qué puede pasar esto, y cómo solucionarlo? Por lógica de la consulta necesito la primera opción
Gracias por anticipado,
Fernando Izquierdo
Valora esta pregunta
0