Sha*_*shi 3 indexing sql-server-2005 non-clustered-index
这是在BFPRODATTRASSOCIATION(value,attributeid)include(productid)上创建索引创建索引idx_ncl_2的查询
BFPRODATTRASSOCIATION的表结构
ProdAttrAssociationId bigint no 8
ProductId bigint no 8
AttributeId bigint no 8
Value varchar no 4096
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
最大密钥长度为900字节.索引'idx_ncl_2'的最大长度为1237字节.
我必须在此列上创建一个非聚集索引.有没有办法我可以为数据类型为varchar且大小大于900的列创建索引.
请建议.
mar*_*c_s 12
您不能 - 正如错误消息已经明确指出的那样,任何索引条目的长度不能超过900个字节.
您不能索引varchar(4096)字段 - 句点.没办法 - 这是一个严格的SQL Server限制 - 无法配置,更改它,使其更大.请参阅联机丛书 - 索引密钥的最大大小以进行确认.
您需要将"值"列限制为小于900字节,或者找到另一种方法来存储该数据 - 或者只是不将其包含在索引中.如果您只希望索引中的"value"字段具有覆盖索引(以便能够满足索引条目中的查询),则可以将该字段移动为索引中的包含列 - 这些字段不属于900字节的限制.
CREATE NONCLUSTERED INDEX idx_ncl_2
ON BFPRODATTRASSOCIATION(attributeid)
INCLUDE (productid, value)
Run Code Online (Sandbox Code Playgroud)
该指数应该有效.