У меня есть таблица размером 4 ГБ, и по умолчанию для кодировки был установлен utf8, хотя я сохраняю только латинские символы. Я изменил его на latin1, используя инструкцию alter table на тестовой машине. Индексный файл log_details.MYI был уменьшен на 5%, тогда как не было никакой разницы было отмечено в файле данных, log_details.MYDЗначение по умолчанию charset
У меня есть несколько вопросов:
1) Должен ли я изменить таблицу на производстве? стоит ли оно того?
2) Будет ли улучшена скорость выбора?
3) Я думаю, у меня могут быть более длинные индексы после того, как я изменю кодировку по умолчанию на latin1. Любое другое преимущество?
Я также отметил, что после изменения кодировки по умолчанию с помощью инструкции alter table типы столбцов varchar были изменены автоматически. Item_ID
varchar (32) набор символов utf8 Как этого избежать?
mysql> create table char_test(id int, Item_ID varchar(32)) default charset = utf8;
Query OK, 0 rows affected (0.02 sec)
mysql> insert into char_test values (1, 'abc');
Query OK, 1 row affected (0.00 sec)
mysql> show create table char_test\G
*************************** 1. row ***************************
Table: char_test
Create Table: CREATE TABLE `char_test` (
`id` int(11) default NULL,
`Item_ID` varchar(32) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
mysql> alter table char_test default charset = latin1;
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> show create table char_test\G
*************************** 1. row ***************************
Table: char_test
Create Table: CREATE TABLE `char_test` (
`id` int(11) default NULL,
`Item_ID` varchar(32) character set utf8 default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)