SQL Server - rendimiento al enviar los parametros a una funcion definida por el usuario [sql server 2008r2]

 
Vista:

rendimiento al enviar los parametros a una funcion definida por el usuario [sql server 2008r2]

Publicado por holas12 (1 intervención) el 06/08/2014 19:56:01
Tengo una funcion, la cual retorna una tabla, el problema esta en el tiempo que se demorando al retornar los dato. Quiero obtimizar el tiempo al ejecutar la funcion.
Creacion de la funcion:
------------- FUNCION ---------------------
CREATE FUNCTION [prueba].[fn_prueba](
@id_persona INT
, @periodo CHAR(6)
)
RETURNS TABLE
AS
RETURN (

SELECT
id
, periodo
, fecha
, usuario

FROM datos
WHERE id = @
id_persona AND periodo = @periodo
)
--------------------------------------------
He realizado las siguientes pruebas para ejecutar la funcion:
1) prueba 1:
DECLARE @id_persona INT =1232,@periodo CHAR(6) = '201408'
SELECT * FROM prueba.fn_prueba(@id_persona,@periodo)
2) prueba 2
SELECT * FROM prueba.fn_prueba(1232 ,'201408')
Resultado de las pruebas:
1) para la “prueba 1” la funcion se tardo en retorna los valores seis segundo (6s)
2) para la “prueba 2” la funcion se tardo en retorna los valores 1 segundo (1s)

Conclucion:
Necesito colaboracion para determinar que puede estar sucediendo y como cual puede ser la forma de optimizar la “prueba 1” . Si la unica diferncia entre las dos pruebas es declarar las varibles “DECLARE @id_persona INT =1232,@periodo CHAR(6) = '201408'
” y despues enviarlas por el parametro a la funcion.

Si necesitan mas informacion para determinar el problema, pueden solicitarla.
Muchas gracias por la colaboracion.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

rendimiento al enviar los parametros a una funcion definida por el usuario [sql server 2008r2]

Publicado por Isaias (4558 intervenciones) el 06/08/2014 22:05:47
En otro foro, LIBRAS te pidió en PLAN DE EJECUCION y dijiste que tenias SqlDbx, ¿Por qué no te conectas via SSME y envías el plan de ejecución?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 86
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

rendimiento al enviar los parametros a una funcion definida por el usuario [sql server 2008r2]

Publicado por Rafael (110 intervenciones) el 07/08/2014 12:53:35
La diferencia real esta en que la prueba 2 tira del cache de SQL como ve que es la misma consulta contesta mas rapido...

De acuerdo a lo que comentas la opcion para optimizar el proceso pasa por generar en la tabla datos un indice por los campos id y periodo.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar