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



我有一个具有nvarchar(max)数据类型列的表。此列中数据的最大长度是37000,那么我不能使用nvarchar(4000)。如何为该列创建索引?我的数据是波斯语的Unicode文本。

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

Best使用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]

最新更新