sql >> Databasteknik >  >> RDS >> Sqlserver

Hur löser man 900 nyckellängdsgränsindex på kolumnen som har datatypen varchar(4096) i SQL Server 2005?

Det kan du inte - som felmeddelandet redan tydligt anger kan en indexpost inte vara mer än 900 byte lång.

Du kan inte indexera ett varchar(4096)-fält - punkt. Ingen väg runt det - det är en hård SQL Server-gräns - inget sätt att konfigurera den, ändra den, göra den större. Se Böcker online - Maximal storlek på indexnycklar för bekräftelse.

Du måste antingen begränsa din "värde"-kolumn till mindre än 900 byte, eller hitta ett annat sätt att lagra denna data - eller helt enkelt inte inkludera den i indexet. Om du bara vill att ditt "värde"-fält i indexet ska ha ett täckande index (för att kunna tillfredsställa frågor från indexposten), kan du flytta fältet till en inkluderad kolumn i indexet - de faller inte under gränsen på 900 byte.

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

Det indexet borde fungera.



  1. Hur inkluderar man nollvärden i `tablefunc`-frågan i postgresql?

  2. SQL Server-avrundningsfel, ger olika värden

  3. Hur man infogar data från Excel-ark till SQL Server 2005

  4. Använd en kommaseparerad sträng i en `IN ()` i MySQL