sql >> Databáze >  >> RDS >> Sqlserver

Limit velikosti indexu 900 bajtů v délce znaků

Velikost úložiště pro varchar je skutečná délka zadávaných dat + 2 bajty. I když samotný sloupec má režii 2 bajty, můžete do sloupce, který je indexován, vložit až 900 bajtových hodnot varchar.

V praxi můžete vytvářet index ve sloupci o velikosti větší než 900 bajtů, ale budete mít problém, pokud se skutečně pokusíte vložit něco většího než 900 bajtů:

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.

Uvědomte si, že limit 900 bajtů zahrnuje všechny sloupce daného indexového klíče, jak ukazuje tento příklad:

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

U těchto sloupců, které jsou obvykle příliš velké pro klíč indexu, můžete získat určité výhody indexování jejich zahrnutím do indexu.



  1. Úvod do kolekcí PL/SQL v databázi Oracle

  2. Jak OBJEDNAT PODLE SOUČTU() v MySQL?

  3. Volání uložené funkce (která vrací pole uživatelem definovaného typu) v oracle přes odkaz na databázi

  4. ORA-30926:při slučování tabulek nelze získat stabilní sadu řádků ve zdrojových tabulkách