Sql Server - nvarchar字段的索引

时间:2014-02-07 09:50:09

标签: sql sql-server nvarchar

保持nvarchar字段唯一的好方法是什么。我有一个存储mp3文件网址的字段。 url长度可以是10个字符到4000之间的任何值。我试图创建一个索引,它说它不能创建索引,因为总长度超过900个字节。

如果该字段未编入索引,则搜索任何内容的速度都会很慢。我正在使用c#,asp.net mvc作为前端。

此致

Paraminder

3 个答案:

答案 0 :(得分:25)

您可以使用CHECKSUM命令并将index放在带校验和的列上。

--*** Add extra column to your table that will hold checksum
ALTER TABLE Production.Product
ADD cs_Pname AS CHECKSUM(Name);
GO

--*** Create index on new column
CREATE INDEX Pname_index ON Production.Product (cs_Pname);
GO

然后,您可以使用以下查询快速检索数据:

SELECT * 
FROM Production.Product
WHERE CHECKSUM(N'Bearing Ball') = cs_Pname
AND Name = N'Bearing Ball';

以下是文档:http://technet.microsoft.com/en-us/library/ms189788.aspx

答案 1 :(得分:4)

你可以使用哈希函数(虽然理论上它不能保证两个不同的标题会有不同的哈希值,但应该足够好:MD5 Collisions)然后在该列上应用索引。

MD5 in SQL Server

答案 2 :(得分:1)

您可以创建网址的哈希码,并将此整数用作数据库的唯一索引。注意首先将所有字符转换为小写,以确保所有URL都采用相同的格式。相同的url将生成相同的哈希码。