我有一个像下面这样的SQL Server表值函数。表值函数性能
CREATE FUNCTION dbo.GetDeptName (@DId INT)
RETURNS TABLE
AS
RETURN
(SELECT DeptID ,
DeptName ,
Location
FROM dbo.department
WHERE Deptno = @DId
);
现在我想从Employee
表中使用此表值函数得到数据。哪一个能够为以下3种情况下的50k记录提供更好的性能。
方案1:
SELECT *
FROM dbo.employee
WHERE deptname IN (SELECT deptname
FROM dbo.GetDeptName(50));
方案2:
SELECT *
FROM dbo.employee e
JOIN dbo.GetDeptName (50) fn ON e.deptname = fn.deptname;
方案3:
SELECT *
FROM dbo.employee e
WHERE EXISTS (SELECT 1
FROM dbo.GetDeptName (50) fn
WHERE e.deptname = fn.deptname);
只要运行它,看看自己。并且你的函数没有条款 –
你的查询是否工作 – TheGameiswar
是的这些工作... – Ram