首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决SQL Server2005中数据类型为varchar(4096)的列的900键长度限制索引?

问如何解决SQL Server2005中数据类型为varchar(4096)的列的900键长度限制索引?
EN

Stack Overflow用户
提问于 2010-06-04 19:09:45
回答 2查看 11.2K关注 0票数 4

这是creating index create index idx_ncl_2 on BFPRODATTRASSOCIATION (值,属性is ) include (productid)的查询

BFPRODATTRASSOCIATION的表结构

代码语言:javascript
复制
ProdAttrAssociationId bigint no 8
ProductId             bigint no 8
AttributeId           bigint  no  8
Value                 varchar no 4096

我得到了这个错误:

密钥最大长度为900字节。索引‘idx_ncl_2’的最大长度为1237字节。

我必须在这个列上创建一个非聚集索引。有没有办法为数据类型为varchar且大小大于900的列创建索引?

请提个建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-04 19:17:06

您不能-正如错误消息已经清楚地指出的那样,任何索引条目的长度都不能超过900个字节。

您不能为varchar(4096)字段句点建立索引。没有办法绕过这一点-这是SQL Server的一个硬性限制-没有办法对其进行配置、更改或使其更大。请参阅Books Online - Maximum Size of Index Keys以进行确认。

您需要将"value“列限制在900字节以内,或者找到另一种方法来存储该数据-或者干脆不将其包含在索引中。如果您只希望索引中的"value“字段具有覆盖索引(以便能够满足来自索引条目的查询),则可以将该字段移动到索引中的包含列-这些列不在900字节的限制之内。

代码语言:javascript
复制
CREATE NONCLUSTERED INDEX idx_ncl_2 
  ON BFPRODATTRASSOCIATION(attributeid) 
  INCLUDE (productid, value)

这个索引应该是有效的。

票数 12
EN

Stack Overflow用户

发布于 2010-06-04 20:05:40

你可以使用create and index on a computed column,它是字符串的散列。有关一些想法和限制,请参阅Hash functions in T-SQL和Intelligent Database Design Using Hash Keys。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2973520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档