utf8 と latin1 の 2 つの異なる文字セット タイプのテーブルを作成しました。
1)
CREATE TABLE `aaa` (
`id` int(11) NOT NULL DEFAULT '0',
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2)
CREATE TABLE `aaa` (
`id` int(11) NOT NULL DEFAULT '0',
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
次に、いくつかの行に値を挿入します。「explain」を使用して両方のテーブルを選択すると、異なる key_len が得られました。
1)
mysql> explain select count(*) from aaa where name = "haha";
| | ID | select_type | テーブル | タイプ | 可能な_キー | キー | key_len | 参照 | 行 s | エクストラ |
| | 1 | シンプル | ああ | 参照 | 名前 | 名前 | 258 | 定数 | 2 | where を使用します。インデックスの使用 |
セットで 1 行 (0.00 秒)
2)
mysql> explain select count(*) from aaa where name = "haha";
| | ID | select_type | テーブル | タイプ | 可能な_キー | キー | key_len | 参照 | 行 s | エクストラ |
| | 1 | シンプル | ああ | 参照 | 名前 | 名前 | 768 | 定数 | 2 | where を使用します。インデックスの使用 |
セットで 1 行 (0.01 秒)
異なる文字セットを使用して定義された同様のテーブルに対して、システムが key_len をどのように割り当てるのかわかりません。