Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment résoudre l'index de limite de longueur de clé de 900 sur la colonne qui a le type de données varchar (4096) dans SQL Server 2005 ?

Vous ne pouvez pas - comme le message d'erreur l'indique déjà clairement, toute entrée d'index ne peut pas dépasser 900 octets.

Vous ne pouvez pas indexer un champ varchar(4096) - point. Aucun moyen de contourner cela - c'est une limite stricte de SQL Server - aucun moyen de le configurer, de le modifier, de l'agrandir. Voir Livres en ligne - Taille maximale des clés d'index pour confirmation.

Vous devez soit limiter votre colonne "valeur" à moins de 900 octets, soit trouver un autre moyen de stocker ces données - ou simplement ne pas les inclure dans l'index. Si vous souhaitez que votre champ "valeur" dans l'index ait un index de couverture (pour pouvoir satisfaire les requêtes de l'entrée d'index), vous pouvez déplacer le champ pour qu'il soit une colonne incluse dans l'index - ceux-ci ne tombent pas sous la limite de 900 octets.

CREATE NONCLUSTERED INDEX idx_ncl_2 
  ON BFPRODATTRASSOCIATION(attributeid) 
  INCLUDE (productid, value)

Cet index devrait fonctionner.