无论如何,在 SQL Server 08 中优化这个可怕的低效 UDF。我对 UDF 相当陌生,特别是在寻找它们进行优化。
更新:如果我想在查询中的每一行和每一列上执行它,我应该将一列发送到这样的函数吗?有没有更好的方法来解决这个问题?
谢谢你
** @value(float) 和 @fieldname(varchar(40)) 是输入参数 **
BEGIN
DECLARE @UT integer, @FRM integer, @TO integer, @FACTOR float
select @UT = [UF_UT_ID] FROM dbo.UNIT_FIELDS where [UF_FIELD]=@fieldName
select @FRM = [UT_UN_ID_INTERNAL_UNITS] from dbo.UNIT_TYPES where [UT_ID]=@UT
select @TO = [UT_UN_ID_DISPLAY_UNITS] from dbo.UNIT_TYPES where [UT_ID]=@UT
select @FACTOR = [UC_SLOPE] from dbo.UNIT_CONVERSIONS where [UC_UN_ID_UNIT_FROM]=@FRM and [UC_UN_ID_UNIT_TO]=@TO
-- Return the result of the function dbo.
RETURN @FACTOR*@value
END