Tir*_*rma 5 sql sql-server sql-server-2005
我有一个基于XML字段的持久列,当我查询该表时,SQL Server总是使用"Compute Scalar".为什么?是不是坚持了?
我怀疑我没有做任何阻止列真正持久化的条件.这是我的表(以及创建持久列所需的功能):
create FUNCTION [dbo].[FuncTestPersisted] (@xml XML)
RETURNS int
WITH SCHEMABINDING
AS
BEGIN
RETURN @xml.value('(/node/@value)[1]','int')
END
create TABLE test_TB(
[ID] [int] NOT NULL,
[CustomProps] [xml] NULL,
[TestPersisted] AS ([dbo].[FuncTestPersisted]([CustomProps])) PERSISTED,
CONSTRAINT [PK_test_TB] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
我将非常感谢避免"计算标量"调用的每一个建议.请不要使用触发器(每个计算的列的一个触发器是.......太多的工作;))
我也尝试过这个表,并且查询执行计划仍然显示"Compute Scalar"调用.为什么?
create TABLE [dbo].[test_TB](
[ID] [int] NOT NULL,
[CustomProps] [xml] NULL,
[TestPersisted] AS (5*ID) PERSISTED,
CONSTRAINT [PK_test_TB] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)