Важность кодировки по умолчанию

0

У меня есть таблица размером 4 ГБ, а набор символов по умолчанию - utf8, хотя я сохраняю только латинские символы. Я изменил его на 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)
Теги:
encoding

1 ответ

1
Лучший ответ

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню