计算列的大小小于“引用列”

Tor*_*son 4 index sql-server sql-server-2008-r2

我有一个数据类型的列,nvarchar(max)我想索引它。但是,由于它太大,这是不可能的。所以我想我可以使用公式根据该列创建一个持久计算列:

left(isnull([fieldValue],''),500)
Run Code Online (Sandbox Code Playgroud)

但是,此列的数据类型为 ,nvarchar(max)因此我无法为其创建索引。是否可以在不使用全文索引的情况下以某种方式对其进行索引?

Tho*_*ger 10

只需在计算列中进行简单的转换:

create table YourTable
(
    -- your other columns....
    YourCompCol as cast(left(isnull(fieldValue, ''), 500) as nvarchar(500))
)
go

create index IX_CompCol
on YourTable(YourCompCol)
go
Run Code Online (Sandbox Code Playgroud)


诺塔·贝内

最大密钥长度为 900 字节,nvarchar(500) 最大长度为 1000 字节。换句话说, anINSERT或 anUPDATE可能会失败。