sql >> Databáze >  >> RDS >> Mysql

Mysql::Error:Zadaný klíč byl příliš dlouhý; maximální délka klíče je 1000 bajtů

Toto je výhradně problém MySQL -

MySQL má různé motory – MyISAM, InnoDB, Memory...

MySQL má různé limity na množství místa, které můžete použít definovat indexy na sloupci (sloupcích) - pro MyISAM je to 1 000 bajtů; je to 767 pro InnoDB . A na datovém typu těchto sloupců záleží – pro VARCHAR , je to 3x, takže index na VARCHAR(100) zabere 300 těchto bajtů (protože 100 znaků * 3 =300).

Chcete-li se přizpůsobit určitému indexování, když dosáhnete maximální hodnoty, můžete definovat index s ohledem na části datového typu sloupce:

CREATE INDEX example_idx ON YOUR_TABLE(your_column(50))

Za předpokladu, že your_column je VARCHAR(100) , index ve výše uvedeném příkladu bude pouze na prvních 50 znacích. Vyhledávání dat za 50. znakem nebude moci index použít.



  1. Jak vytvořit uložené procedury v SQL?

  2. zobrazit vlastní text SQL z výsledku sloupce tabulky

  3. Oprava „ERROR 1222 (21000):Použité příkazy SELECT mají jiný počet sloupců“ při použití UNION v MariaDB

  4. Funkce EXP() v Oracle