2012-10-11 26 views
6

Jaki jest maksymalny numer kolumny klucza wielokolumnowego (MySQL)? Czy zależy od typu danych kolumny lub silnika?Klucz podstawowy wielokolumnowy MySQL

+0

jej 16 w serwerze SQL 2008 .. nie wiem abt mysql –

+0

[Ten artykuł jest z 2006 roku] (http : //www.xaprb.com/blog/2006/04/17/max-key-length-in-mysql/) i podaje maksymalną długość klucza podstawowego to 1000 bajtów. Nie jestem pewien, czy to się zmieniło od tego czasu. – Taryn

+0

Myślę, że limity wynoszą 1000 bajtów dla MyiSAM i 3072 dla silnika InnoDB. –

Odpowiedz

6

Tak, to zależy od silnika do przechowywania.

  • MyISAM:

    The maximum number of columns per index is 16. The maximum key length is 1000 bytes. This can also be changed by changing the source and recompiling. For the case of a key longer than 250 bytes, a larger key block size than the default of 1024 bytes is used.

  • InnoDB:

    The InnoDB internal maximum key length is 3500 bytes, but MySQL itself restricts this to 3072 bytes. This limit applies to the length of the combined index key in a multi-column index.

+0

Dziękuję. Świetna odpowiedź. –

1

Znalazłem to:

ktoś próbował stworzyć PK z 2 kolumn i pojawił się ten błąd:
„Określony klucz był zbyt długi; maksymalna długość klucza jest 1024 bajtów” tak to wygląda, że ​​maksymalna to 1024 bajty, nie ma znaczenia liczba kolumn, co naprawdę ma znaczenie, jest typem var, a przestrzeń go przypisuje.

I widać przykłady tak:

create table OS_PROPERTYENTRY (entity_name VARCHAR(125) not null, entity_id BIGINT not null, 

entity_key VARCHAR(255) not null date_val DATETIME, primary key (entity_name, entity_id, entity_key)) 

miarę

125 * (3 bity) + 255 * (3 bity) + 1 * (8 bajtów) = 1148 bajtów. Więc nie można stworzyć PK.

spojrzeć tutaj, mówią o nim: https://jira.atlassian.com/browse/CONF-2783

Powiązane problemy