Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 这个函数有多优化_Sql_Sql Server_Sql Server 2005_Tsql_User Defined Functions - Fatal编程技术网

Sql 这个函数有多优化

Sql 这个函数有多优化,sql,sql-server,sql-server-2005,tsql,user-defined-functions,Sql,Sql Server,Sql Server 2005,Tsql,User Defined Functions,我要实现这个函数来计算一些数字 CREATE FUNCTION [dbo].[funLookupFTE] (@PFID int) RETURNS VARCHAR(20) AS BEGIN DECLARE @NumberOfFTE AS VARCHAR(20) SET @NumberOfFTE = (SELECT SUM(CASE WHEN Hours <= 20 THEN 0.5 WHEN Hours > 20 THEN 1 END) AS FTECount

我要实现这个函数来计算一些数字

CREATE FUNCTION [dbo].[funLookupFTE] (@PFID int) RETURNS
    VARCHAR(20) AS BEGIN 

DECLARE @NumberOfFTE AS VARCHAR(20)
SET @NumberOfFTE = (SELECT  SUM(CASE WHEN Hours <= 20 THEN 0.5 WHEN Hours > 20 THEN 1     END) AS FTECount 
                    FROM tblPractitioners 
                    WHERE PFID =
@PFID)
RETURN @NumberOfFTE
END

只是想看看它是否是最优的,它不会自行处理问题。

如果要在任何类型的查询中调用它,您最好使用子查询而不是用户定义的函数

例如:

SELECT * FROM tblPractioners P1
INNER JOIN
(
    SELECT  PFID, SUM(CASE WHEN Hours <= 20 THEN 0.5 WHEN Hours > 20 THEN 1 END) 
        AS FTECount 
    FROM tblPractitioners 
    GROUP BY PFID
) P2 ON P1.PFID = P2.PFID

用户定义函数的性能可能非常差,但是您确实需要使用子查询或UDF来比较执行计划,看看哪个更好。

如果要在任何类型的查询中调用它,您可能最好使用子查询而不是用户定义函数

例如:

SELECT * FROM tblPractioners P1
INNER JOIN
(
    SELECT  PFID, SUM(CASE WHEN Hours <= 20 THEN 0.5 WHEN Hours > 20 THEN 1 END) 
        AS FTECount 
    FROM tblPractitioners 
    GROUP BY PFID
) P2 ON P1.PFID = P2.PFID

用户定义函数的性能可能非常差,但您确实需要使用子查询或UDF来比较执行计划,看看哪一个更好。

为什么要将求和值返回为varchar20?重要的不是函数,而是模式。您有什么索引,表有什么基数?为什么返回一个和值作为varchar20?重要的不是函数,而是模式。你有什么索引,桌子有什么基数?@OMG-嘿,我去吃了几个小时的晚餐,你们有机会。哎呀,我不知道有多晚了@天哪,小马们,看谁在说话!!:-:-我说,你们两个都给我们留下了一些-@疯子:先生,你伤害了我你的评论让我崩溃了:但谢谢你的见解。@OMG-嘿,我去吃了几个小时的晚餐,你们有机会。哎呀,我不知道有多晚了@天哪,小马们,看谁在说话!!:-:-我说,你们两个都给我们留下了一些-@疯子:先生,你伤害了我你的评论让我崩溃了:但谢谢你的见解。