sql >> Database >  >> RDS >> Sqlserver

Hoe de 900 sleutellengte-limietindex op de kolom met datatype varchar(4096) in SQL Server 2005 op te lossen?

Dat kan niet - zoals de foutmelding al duidelijk aangeeft, mag een indexitem niet meer dan 900 bytes lang zijn.

U kunt een varchar(4096)-veld - periode niet indexeren. Je kunt daar niet omheen - het is een harde SQL Server-limiet - je kunt het niet configureren, wijzigen of groter maken. Zie Boeken online - maximale grootte van indexsleutels voor bevestiging.

U moet ofwel uw "waarde"-kolom beperken tot minder dan 900 bytes, of een andere manier vinden om die gegevens op te slaan - of ze gewoon niet opnemen in de index. Als u alleen wilt dat uw "waarde"-veld in de index een dekkende index heeft (om te kunnen voldoen aan zoekopdrachten uit de index-invoer), kunt u het veld verplaatsen naar een opgenomen kolom in de index - die vallen niet onder de limiet van 900 bytes.

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

Die index zou moeten werken.



  1. Hoe LOAD_FILE() werkt in MariaDB

  2. MySQL verwijdert meerdere rijen in één queryvoorwaarden die uniek zijn voor elke rij

  3. MAA-documentatie voor de Oracle Cloud

  4. JSON_MERGE_PRESERVE() – Voeg meerdere JSON-documenten samen in MySQL