回答

收藏

用户定义的函数SQL Server 2005错误标记不确定吗?

技术问答 技术问答 274 人阅读 | 0 人回复 | 2023-09-14

我决定检查数据仓库中的数据UDF(这在很大程度上应该是确定性的),发现了一些不应该的UDF。5 x* N; B7 I3 P
例如:
; D" q, I5 j) e( ]7 P) wCREATE FUNCTION [udf_YearFromDataDtID](    @DATA_DT_ID int)RETURNS intASBEGIN    RETURN @DATA_DT_ID / 10000END在此查询中显示:/ t& n! G' k& |9 K: `( W6 d
SELECT  ROUTINE_NAMEFROM    INFORMATION_SCHEMA.ROUTINESWHERE   IS_DETERMINISTIC = 'NO          AND ROUTINE_TYPE = 'FUNCTION'ORDER BY ROUTINE_NAME为什么会这样?8 f) d( c. ?. T7 C6 n# A
                                                               
) z7 `" q7 p2 G- \    解决方案:                                                                % ?5 ~, ^- j% K  ~& j4 a
                                                                Yikes-
* ~0 R* r7 ^6 X6 {) U6 F显然,它需要它SCHEMABINDING其他指定可能会导致性能问题
/ g" h$ w; D6 pALTER FUNCTION [udf_YearFromDataDtID](    @DATA_DT_ID int)RETURNS intWITH SCHEMABINDINGASBEGIN    RETURN @DATA_DT_ID / 10000END通过修复这些问题,我可能会得到一些性能改善。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则