sql >> Databasteknik >  >> RDS >> Mysql

Mysql::Fel:Angiven nyckel var för lång; max nyckellängd är 1000 byte

Detta är enbart ett MySQL-problem -

MySQL har olika motorer - MyISAM, InnoDB, Memory...

MySQL har olika gränser för hur mycket utrymme du kan använda för att definiera index på kolumn(er) - för MyISAM är det 1 000 byte; det är 767 för InnoDB . Och datatypen för dessa kolumner spelar roll - för VARCHAR , det är 3x så ett index på en VARCHAR(100) tar 300 av dessa byte (eftersom 100 tecken * 3 =300).

För att tillgodose viss indexering när du når takvärdet kan du definiera indexet med avseende på delar av kolumndatatypen:

CREATE INDEX example_idx ON YOUR_TABLE(your_column(50))

Förutsatt att your_column är VARCHAR(100) , kommer indexet i exemplet ovan endast att finnas på de första 50 tecknen. Att söka efter data utöver det 50:e tecknet kommer inte att kunna använda indexet.



  1. Konvertera 'datetimeoffset' till 'time' i SQL Server (T-SQL-exempel)

  2. Fix:"BACKUP LOG kan inte utföras eftersom det inte finns någon aktuell databassäkerhetskopiering." i SQL Server/SQL Edge

  3. Bästa praxis för paginering i Oracle?

  4. Hur man använder parameter med LIKE i SQL Server Compact Edition