[英]Sql Server - Index on nvarchar field
保持nvarchar
字段唯一的好方法是什么。 我有一个字段,用于存储MP3文件的URL。 URL的长度可以是10个字符到4000个字符。我试图创建一个索引,它说它不能创建索引,因为总长度超过900个字节。
如果该字段未建立索引,则搜索任何内容都会很慢。 我在前端使用C#,ASP.net MVC。
您可以使用CHECKSUM命令,并将索引放在带有校验和的列上。
--*** 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/zh-cn/library/ms189788.aspx
您可以使用哈希函数(尽管从理论上讲,它不能保证两个不同的标题具有不同的哈希值,但是应该足够好: MD5 Collisions ),然后将索引应用于该列。
您可以创建url的哈希码,并将此整数用作数据库上的唯一索引。 注意首先将所有字符都转换为小写,以确保所有url都采用相同的格式。 相同的网址将生成相等的哈希码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.