Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak rozwiązać indeks limitu długości klucza 900 w kolumnie, która ma typ danych varchar(4096) w programie SQL Server 2005?

Nie możesz — jak już wyraźnie mówi komunikat o błędzie, żaden wpis indeksu nie może być dłuższy niż 900 bajtów.

Nie można zindeksować pola varchar(4096) - kropka. Nie ma mowy o tym - to twardy limit SQL Server - nie ma możliwości, aby go skonfigurować, zmienić, powiększyć. Zobacz Książki online — maksymalny rozmiar kluczy indeksu do potwierdzenia.

Musisz ograniczyć kolumnę „value” do mniej niż 900 bajtów lub znaleźć inny sposób przechowywania tych danych – lub po prostu nie uwzględniać ich w indeksie. Jeśli chcesz, aby tylko pole „wartość” w indeksie miało indeks pokrywający (aby móc spełnić zapytania z pozycji indeksu), możesz przenieść to pole do kolumny dołączonej w indeksie - te nie mieszczą się w limicie 900 bajtów.

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

Ten indeks powinien działać.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaki jest dobry pomysł na zapisywanie danych czatu w bazie danych?

  2. Dane przestawne SQL z dynamiczną listą kolumn

  3. Czy klucz obcy może mieć wartość NULL i/lub być duplikatem?

  4. Jak można iterować po wynikach procedury składowanej z poziomu innej procedury składowanej .... bez kursorów?

  5. Pusta instrukcja w T-SQL