У меня есть таблица размером 4 ГБ, и для кодировки по умолчанию установлено значение utf8, хотя я сохраняю только символы latin1. Я изменил его на latin1, используя оператор alter table на тестовой машине. Индексный файл log_details.MYI был уменьшен на 5%, в то время как в файле данных log_details.MYD не было замечено никаких изменений.
У меня есть несколько вопросов:
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)