这是creating index create index idx_ncl_2 on BFPRODATTRASSOCIATION (值,属性is ) include (productid)的查询
BFPRODATTRASSOCIATION的表结构
ProdAttrAssociationId bigint no 8
ProductId bigint no 8
AttributeId bigint no 8
Value varchar no 4096我得到了这个错误:
密钥最大长度为900字节。索引‘idx_ncl_2’的最大长度为1237字节。
我必须在这个列上创建一个非聚集索引。有没有办法为数据类型为varchar且大小大于900的列创建索引?
请提个建议。
发布于 2010-06-04 19:17:06
您不能-正如错误消息已经清楚地指出的那样,任何索引条目的长度都不能超过900个字节。
您不能为varchar(4096)字段句点建立索引。没有办法绕过这一点-这是SQL Server的一个硬性限制-没有办法对其进行配置、更改或使其更大。请参阅Books Online - Maximum Size of Index Keys以进行确认。
您需要将"value“列限制在900字节以内,或者找到另一种方法来存储该数据-或者干脆不将其包含在索引中。如果您只希望索引中的"value“字段具有覆盖索引(以便能够满足来自索引条目的查询),则可以将该字段移动到索引中的包含列-这些列不在900字节的限制之内。
CREATE NONCLUSTERED INDEX idx_ncl_2
ON BFPRODATTRASSOCIATION(attributeid)
INCLUDE (productid, value)这个索引应该是有效的。
发布于 2010-06-04 20:05:40
你可以使用create and index on a computed column,它是字符串的散列。有关一些想法和限制,请参阅Hash functions in T-SQL和Intelligent Database Design Using Hash Keys。
https://stackoverflow.com/questions/2973520
复制相似问题