用户定义的函数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通过修复这些问题,我可能会得到一些性能改善。 |
|
|
|
|
|