8

複数列の主キー (MySQL) の最大列数はいくつですか? 列のデータ型またはエンジンに依存しますか?

4

2 に答える 2

8

はい、ストレージ エンジンに依存します。

  • MyISAM :

    インデックスあたりの列の最大数は 16 です。キーの最大長は 1000 バイトです。これは、ソースを変更して再コンパイルすることでも変更できます。250 バイトを超えるキーの場合、デフォルトの 1024 バイトよりも大きなキー ブロック サイズが使用されます。

  • InnoDB :

    InnoDB 内部の最大キー長は 3500 バイトですが、MySQL 自体はこれを 3072 バイトに制限しています。この制限は、複数列のインデックスの結合されたインデックス キーの長さに適用されます。

于 2012-10-11T12:48:26.683 に答える
0

私はこれを見つけました:

誰かが2列のPKを作成しようとしましたが、
「指定されたキーが長すぎました。最大キー長は1024バイトです」というエラーが表示されたため、最大は1024バイトであるように見えます。実際に重要なのは、列番号は関係ありません。 varタイプとスペースがそれを割り当てます。

私はこのようないくつかの例を見てきました:

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))

どこ

125 *(3バイト)+ 255 *(3バイト)+ 1 *(8バイト)=1148バイト。したがって、PKを作成することはできません。

ここを見てください、彼らはそれについて話します:https ://jira.atlassian.com/browse/CONF-2783

于 2012-10-11T12:36:21.753 に答える