保持nvarchar字段唯一的好方法是什么。我有一个存储mp3文件网址的字段。 url长度可以是10个字符到4000之间的任何值。我试图创建一个索引,它说它不能创建索引,因为总长度超过900个字节。
如果该字段未编入索引,则搜索任何内容的速度都会很慢。我正在使用c#,asp.net mvc作为前端。
此致
Paraminder
答案 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)然后在该列上应用索引。
答案 2 :(得分:1)
您可以创建网址的哈希码,并将此整数用作数据库的唯一索引。注意首先将所有字符转换为小写,以确保所有URL都采用相同的格式。相同的url将生成相同的哈希码。