SQL Server:索引或主键的总大小不能超过900个字节

时间:2011-10-18 00:46:23

标签: sql-server-2008

我正在尝试在包含URL的列上放置索引。由于URL的最大长度超过2000个字符,我将数据类型设置为NVARCHAR(3000)。当我这样做时,我收到错误The total size of an index or primary key cannot exceed 900 bytes。由于我可能需要通过URL搜索记录,因此我需要在我的URL列上添加索引。有没有解决这个限制的方法?

2 个答案:

答案 0 :(得分:10)

您可以为URL的校验和创建计算列,然后在查询中使用校验和。校验和不会是唯一的,但会很快缩小可能的匹配数量。

首先,在表中添加一个计算列,如下所示:

Alter Table YourTableName Add URL_HASH As CheckSum(URL)

现在将列索引为:

Create Index idx_YourTableName_URL_HASH On YourTableName(URL_HASH)

现在您可以编写一个查询来执行索引寻找找到您要查找的行:

Select URL
From   YourTableName
Where  URL_HASH = CheckSum(N'google.com')
       And URL = 'google.com'

此方法适用于完全匹配。如果您想要部分匹配,最好使用全文搜索功能。

答案 1 :(得分:1)

SQL Server全文搜索是您可能想要的。

http://msdn.microsoft.com/en-us/library/ms142571.aspx

你必须通过设置它与一个简单的索引来跳过一些小箍,但它不应该超级难。