2011-01-20 6 views
0

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

ответ

1

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

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

Смежные вопросы