Важность кодировки по умолчанию - PullRequest
0 голосов
/ 20 января 2011

У меня есть таблица на 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)

1 Ответ

1 голос
/ 20 января 2011

Производительность - это, наверное, последнее, о чем вы должны заботиться. Какой набор символов вы используете на стороне клиента app ? На каком естественном языке написана информация? Вот вопросы, которые вы должны задать.

Если вы придерживаетесь Latin1, вы не сможете хранить японские символы, а также некоторые обычные символы, такие как . С другой стороны, использование UTF-8 в базе данных может быть бесполезным (или просто неправильным), если ваше приложение не может обрабатывать многобайтовый ввод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...