标签: sql-function

SQL Server功能间歇性性能问题

我们在数据库中有一个函数,它搜索两个大表以查看是否存在值.这是一个非常大的查询,但它被优化为使用索引,并且通常运行得非常快.

在过去两周内,这个功能已经三次失败并且运行速度非常慢,导致死机和性能不佳.即使在低于峰值使用的时候也会发生这种情况.

使用SQL Server中的"Alter Function"重建函数似乎可以解决这个问题.一旦我们这样做,服务器使用率恢复正常,一切正常.

这使我们认为函数查询计划已经重建,并且正在考虑正确的索引,但我们不知道为什么SQL Server决定突然将查询计划更改为更糟糕的计划.

有没有人有任何想法可能导致这种行为,或如何测试它,或阻止它?我们正在运行SQL Server 2008 Enterprise.

sql sql-server sql-function sql-server-2008

0
推荐指数
1
解决办法
2216
查看次数

为什么我的函数返回 NULL,而同一个查询却给出结果?

当我运行这个查询时,我得到了预期的结果,即一个UNIQUEIDENTIFIER

select top 1 ec.NewValue from Events e
join EventChanges ec on e.Id = ec.EventId
where e.EntityChangedId = 'aceaea4b-e4d1-45ea-84f7-8ecda1a0b20e'
    and ec.FieldChanged = 'Company.CallFrequencyId'
    and e.EventDate <= '2022-07-11 15:32:00.0000000 +00:00'
order by e.EventDate desc
Run Code Online (Sandbox Code Playgroud)

但是,当我创建一个包含完全相同的查询的函数并调用它时,我得到NULL

CREATE FUNCTION [dbo].[GetCallFrequencyIdAtDate](@companyId VARCHAR, @date DATETIME2)
RETURNS VARCHAR
AS BEGIN
RETURN (
    select top 1 ec.NewValue from Events e
    join EventChanges ec on e.Id = ec.EventId
    where e.EntityChangedId = @companyId
        and ec.FieldChanged = 'Company.CallFrequencyId'
        and e.EventDate <= @date
    order by e.EventDate desc …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-function sql-server-2019

0
推荐指数
1
解决办法
253
查看次数

如何在 SQL Server 2012 中替换 0 和 1

我有一个橄榄球数据库+球员表。在玩家表中,我有表现,我想将表现表示为

  • 0 = 低
  • 1 = 中等
  • 2 = 高

我不知道该列应该是什么数据类型。做到这一点的公式或函数是什么?

请帮忙

sql database sql-server sql-function sql-server-2012

-1
推荐指数
1
解决办法
4210
查看次数

如何将tableName和columnName发送到sql函数并返回结果

我想创建一个T-SQL函数,向其发送表名和列名,并获取此列的最大值.

我写了一个这样的函数:

CREATE FUNCTION getMaxValue 
     (@TableName nvarchar(30),@FieldName nvarchar(30))
RETURNS nvarchar(max) 
AS  
BEGIN 
    DECLARE @SqlString nvarchar(MAX)
    --declare @Result nvarchar(MAX)

    SET @SqlString = ' select max( ' + @FieldName + ') from ' + @TableName 
    RETURN EXEC(@SqlString)
END
Run Code Online (Sandbox Code Playgroud)

但我不能使用EXECSET,SELECT或者RETURN在这个函数中.

请帮我解决这个问题.

sql t-sql sql-server sql-function

-2
推荐指数
1
解决办法
135
查看次数