当前位置: 首页 > 面试题库 >

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

陆文博
2023-03-14
问题内容

我决定检查数据仓库中的UDF(这在很大程度上应该是确定性的),并且发现了一些不应该的UDF。

例如:

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

显示在此查询中:

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

为什么是这样?


问题答案:

Yikes-
显然,它需要SCHEMABINDING进行其他指定,否则可能会导致性能问题

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

通过修复这些问题,我可能会获得一些性能提升。好的。



 类似资料:
  • 错误消息为: 为什么我会得到那个错误?我怎么修好它?

  • 我安装了新系统(Ubuntu20.04),我安装了LAMP和克隆的Laravel项目。我创建了数据库博客,我想迁移,但我有这个错误。 SQLSTATE[HY000]:一般错误:1449指定为定义者的用户('mysql.infoschema'@'localhost')不存在(SQL:select*from information\u schema.tables,其中table\u schema=bl

  • 有人能告诉我,当我尝试将旧的sql切换到SQLI时,为什么这不起作用吗: 致: 它一直给我一个错误:“致命错误:调用未定义的函数mysqli_result()”

  • 问题内容: 当我想在浏览器上运行phpMyAdmin时,向我显示此错误: 我在PHP 5.5.7中使用fedora 17。 有解决问题的主意吗? 问题答案: 检查您的会话目录是否可被Web服务器进程写入。 最好的方法是创建自己的phpinfo文件。在任何可通过网络访问的文件夹中,创建一个包含以下内容的文件(您可以将其命名为test.php或phpinfo.php或其他名称): 在浏览器(或类似浏览

  • 我正在使用 Scala,并希望构建自己的数据帧函数。例如,我想将一列视为数组,循环访问每个元素并进行计算。 首先,我尝试实现自己的getMax方法。因此列x的值为[3,8,2,5,9],该方法的预期输出为9。 下面是它在Scala中的样子 这是我目前所知道的,并得到这个错误 我不知道如何迭代该列。 } 一旦我能够实现自己的方法,我将创建一个列函数 然后我希望能够在SQL的陈述中使用它 给定输入列[

  • 问题内容: 我正在处理大量旧数据(从平面文件db转换),其中字段的格式设置为输入记录的年份的最后2位,然后是4位的增量… 例如,1998年创建的第三条记录将为“ 980003”,而2004年创建的第十一条记录将为“ 040011”。 我无法更改这些值- 它们通过他们的公司存在,已经在州,客户等中注册。我知道将年份和其余年份分隔到单独的列中会很好,但这是不可能的。我什至不能真正做到“内部”,因为每一