如何在sql中的nvarchar(max)数据类型上创建索引?

时间:2012-09-09 05:42:00

标签: sql indexing

我有一个包含nvarchar(max)数据类型列的表。此列中的最大数据长度为37000,然后我无法使用nvarchar(4000)。如何为此列创建索引?我的数据是波斯语中的unicode文本。

2 个答案:

答案 0 :(得分:14)

1-你可以在“INCLUDE”中使用它

IF OBJECT_ID('tempdb..#example') IS NOT NULL 
BEGIN
    DROP TABLE #example
END

CREATE TABLE #example (id INT PRIMARY KEY IDENTITY(1,1), name VARCHAR(MAX))

CREATE NONCLUSTERED INDEX IDX_NC_temp_example_name ON #example(id) INCLUDE(name)

2 - 或者您可以考虑使用“CHECKSUM”方法。它打算用于建立哈希索引,特别是为了提高索引长字符列的索引速度(如你所知)。 您可以阅读更多内容并查找示例:http://msdn.microsoft.com/en-us/library/ms189788.aspx

答案 1 :(得分:1)

最好使用DROP_EXISTING = ON,它使用现有索引进行重建。

这是一个例子

CREATE NONCLUSTERED INDEX IDX_NC_temp_example_name ON #example(id) INCLUDE(name)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, SORT_IN_TEMPDB = ON, DROP_EXISTING = ON, ONLINE = ON, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]