2013-03-07 40 views
0

我只是尝试这样做,得到了有用的信息,即如何为SQL Server中的字符串列创建非聚集索引?

列“用户名”表“用户”是一种类型,它是 无效用作索引中的键列。

用户名是nvarchar(最大)列。

+3

nvarchar(max)不能用作约束/索引。看看这个类似的问题:http://stackoverflow.com/questions/1184490/why-cant-i-put-a-constraint-on-nvarcharmax – squillman 2013-03-07 02:47:16

+2

为什么你想要一个'nvarchar(最大)''柱?你为什么使用'nvarchar(max)'作为用户名?你认为有人想在他们的用户名中输入十亿个字符吗?可能'nvarchar(50),(64)或(255)'就足够了。 '(320)'是否代表电子邮件地址。我想知道Unicode是否真的是这里的要求。 – 2013-03-07 02:52:47

+0

甚至可以在多种语言中使用十亿个字符。 – 2013-03-07 05:38:03

回答

2

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

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

从你的列名'用户名'进行猜测我会将列类型更改为像nvarchar(50)那样小的东西。 nvarchar(max)数据类型可以存储高达4Gb的文本,并用于更多的全文存储(在这种情况下,您可以设置全文搜索)。

+1

这也将使索引巨大和不可维护。 – 2013-03-07 02:51:20

相关问题