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

Hvordan løser man 900 nøglelængdegrænseindeks på kolonnen, der har datatypen varchar(4096) i SQL Server 2005?

Det kan du ikke - som fejlmeddelelsen allerede tydeligt angiver, kan enhver indeksindtastning ikke være mere end 900 byte lang.

Du kan ikke indeksere et varchar(4096) felt - punktum. Ingen vej udenom - det er en hård SQL Server-grænse - ingen måde at konfigurere den, ændre den, gøre den større. Se Bøger online – maksimal størrelse på indeksnøgler til bekræftelse.

Du skal enten begrænse din "værdi"-kolonne til mindre end 900 bytes eller finde en anden måde at gemme disse data på - eller bare lade være med at inkludere dem i indekset. Hvis du kun ønsker, at dit "værdi"-felt i indekset skal have et dækkende indeks (for at kunne opfylde forespørgsler fra indeksindgangen), kan du flytte feltet til at være en inkluderet kolonne i indekset - de falder ikke under grænsen på 900 byte.

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

Det indeks burde virke.



  1. Få størrelse på alle tabeller i databasen

  2. Udenlandske nøgler i Laravel 4-migreringsproblemet

  3. Sende C-variabler til SQL-kommando

  4. Læsning fra stream mislykkedes - mysql_native_password fejl