Pregunta

Relacionado con esta pregunta , decidí verificar los UDF en mi almacén de datos (que en gran medida debería han sido deterministas), y encontré varios que no son los que deberían ser.

Por ejemplo:

CREATE FUNCTION [udf_YearFromDataDtID]
(
    @DATA_DT_ID int
)
RETURNS int
AS
BEGIN
    RETURN @DATA_DT_ID / 10000
END

Aparece en esta consulta:

SELECT  ROUTINE_NAME
FROM    INFORMATION_SCHEMA.ROUTINES
WHERE   IS_DETERMINISTIC = 'NO'
        AND ROUTINE_TYPE = 'FUNCTION'
ORDER BY ROUTINE_NAME

¿Por qué es esto?

¿Fue útil?

Solución

Yikes - al parecer, REQUIERE que se especifique SCHEMABINDING de otra manera podría causar problemas de rendimiento

ALTER FUNCTION [udf_YearFromDataDtID]
(
    @DATA_DT_ID int
)
RETURNS int
WITH SCHEMABINDING
AS
BEGIN
    RETURN @DATA_DT_ID / 10000
END

Parece que podría obtener algunos aumentos de rendimiento al solucionarlos. Agradable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top