Nee*_*bey 14 sql sql-server sql-server-2008
我们可以在SQL Server 2008中的表值函数表中的列上创建索引吗?
我的功能是缓慢的结果.当我查看执行计划时,它是在表扫描下,因此我需要在函数表列上创建索引,以便将where子句放在其上.
任何帮助将受到高度赞赏.
提前致谢
Mar*_*ith 16
如果表值函数是内联变量,则可以在基础表列上创建索引.
如果它是SQL Server 2008中的多语句TVF(标记为),则只能创建与主键或唯一约束关联的索引.
在SQL Server 2014+中,可以声明与任何约束无关的内联索引.
例
CREATE FUNCTION F()
RETURNS @X TABLE
(
A INT PRIMARY KEY /*<-- Implicit clustered index*/
)
AS
BEGIN
INSERT INTO @X
VALUES(1),(2)
RETURN;
END
GO
SELECT *
FROM F()
WHERE A = 12
Run Code Online (Sandbox Code Playgroud)

上面将整个结果集首先实现为表变量,并在其上创建隐式索引.
通常,内联TVF比多语句更受欢迎.
| 归档时间: |
|
| 查看次数: |
17059 次 |
| 最近记录: |