Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Ограничение за размера на индекса от 900 байта в дължината на знаците

Размерът на съхранение за varchar е действителната дължина на въведените данни + 2 байта. Въпреки че самата колона има тези 2 байта надписи, можете да поставите до 900 байта varchar стойности в колона, която е индексирана.

На практика можете да създавате индекс на колона, по-голяма от 900 байта по размер, но ще имате проблем, ако наистина се опитате да вмъкнете нещо по-голямо от 900 байта:

create table test (
    col varchar(1000)
);
create index test_index on test (col);
-- Warning! The maximum key length is 900 bytes. The index 'test_index' has maximum length of 1000 bytes. For some combination of large values, the insert/update operation will fail.
insert into test select cast(replicate('x', 899) as varchar(1000)); -- Success
insert into test select cast(replicate('y', 900) as varchar(1000)); -- Success
insert into test select cast(replicate('z', 901) as varchar(1000)); -- Fail
-- Msg 1946, Level 16, State 3, Line 8
-- Operation failed. The index entry of length 901 bytes for the index 'test_index' exceeds the maximum length of 900 bytes.

Имайте предвид, че ограничението от 900 байта включва всички колони на даден индексен ключ, както показва този пример:

create table test (
      col varchar(1000)
    , otherCol bit -- This column will take a byte out of the index below, pun intended
);
create index test_index on test (col, otherCol);
insert into test select cast(replicate('x', 899) as varchar(1000)), 0; -- Success
insert into test select cast(replicate('y', 900) as varchar(1000)), 0; -- Fail
insert into test select cast(replicate('z', 901) as varchar(1000)), 0; -- Fail

За тези колони, които обикновено са твърде големи за ключ за индекс, може да успеете да извлечете някои предимства от индексирането, като ги включите в индекс.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server Xml заявка с множество пространства от имена

  2. Най-бързият начин за изброяване на всички бази данни в SQL Server с помощта на T-SQL

  3. Как да върнете нарастващ номер на група за група в SQL

  4. Разделяне на низа в sql сървър

  5. Защо SQL сървърът издава тази грешка:Не може да се вмъкне стойността NULL в колона "id"?