Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come risolvere l'indice del limite di lunghezza della chiave 900 nella colonna che ha il tipo di dati varchar(4096) in SQL Server 2005?

Non puoi, come afferma già chiaramente il messaggio di errore, qualsiasi voce di indice non può essere più lunga di 900 byte.

Non è possibile indicizzare un campo varchar(4096) - punto. Non c'è modo di aggirarlo - è un limite di SQL Server rigido - non c'è modo di configurarlo, cambiarlo, ingrandirlo. Vedi Libri in linea - Dimensione massima delle chiavi di indice per conferma.

È necessario limitare la colonna "valore" a meno di 900 byte o trovare un altro modo per archiviare quei dati o semplicemente non includerli nell'indice. Se vuoi solo che il tuo campo "valore" nell'indice abbia un indice di copertura (per poter soddisfare le query dalla voce dell'indice), puoi spostare il campo in una colonna inclusa nell'indice - quelli non rientrano nel limite di 900 byte.

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

Quell'indice dovrebbe funzionare.