Sql server 如何在SQL Server中为字符串列创建非聚集索引?

Sql server 如何在SQL Server中为字符串列创建非聚集索引?,sql-server,database-indexes,Sql Server,Database Indexes,我刚试过这个,得到了有用的信息 表“Users”中的列“Username”的类型为 用作索引中的键列无效 用户名是nvarchar(max)列。不能向nvarchar(max)或varchar(max)列添加索引,但它可以是索引的一部分 您可以将其包含在索引中,但该索引需要脱机创建/重建 从您的列名“Username”猜一猜,我会将列类型更改为更小的类型,如nvarchar(50)。nvarchar(max)数据类型最多可以存储4Gb的文本,并用于更多的全文存储(在这种情况下,您可以设置全文搜索

我刚试过这个,得到了有用的信息

表“Users”中的列“Username”的类型为 用作索引中的键列无效


用户名是nvarchar(max)列。

不能向nvarchar(max)或varchar(max)列添加索引,但它可以是索引的一部分

您可以将其包含在索引中,但该索引需要脱机创建/重建


从您的列名“Username”猜一猜,我会将列类型更改为更小的类型,如nvarchar(50)。nvarchar(max)数据类型最多可以存储4Gb的文本,并用于更多的全文存储(在这种情况下,您可以设置全文搜索)

nvarchar(最大值)不能用作约束/索引。看看这个类似的问题:为什么要在
nvarchar(max)
列上建立索引?为什么要使用
nvarchar(max)
作为用户名?你认为有人想在用户名中输入十亿个字符吗?可能
nvarchar(50)、(64)或(255)
就足够了<代码>(320)如果它要表示电子邮件地址。我想知道这里是否真的需要Unicode。LOL甚至可以跨多种语言输入10亿个字符。索引项的最大大小是900字节——任何大于此值的内容都无法索引。因此,您最多可以索引一个
nvarchar(450)
(或
varchar(900)
),更大的字符串列不适合索引。我很高兴我为人们提供了一些娱乐它还将使索引变得庞大且无法维护。