繁体   English   中英

SQL Server-nvarchar字段上的索引

[英]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 ),然后将索引应用于该列。

SQL Server中的MD5

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM