2011-01-20 7 views
0

latin1 문자 만 저장하지만 4GB 테이블이 있고 기본 charset은 utf8로 설정되었습니다. 테스트 머신에서 alter table 문을 사용하여 latin1로 변경했습니다.기본 문자 집합의 중요성

1) 내가 생산에 테이블을 변경해야 : 데이터 파일에서 언급 한 차이가 없었다 동안 log_details.MYI 5 % 감소 된 인덱스 파일, 나는 몇 가지 질문이

을 log_details.MYD? 그만한 가치가 있니?

2) 선택 속도가 향상됩니까?

3) 기본 charset을 latin1로 변경하면 더 긴 인덱스를 가질 수 있습니다. 어떤 다른 이점?

또한 alter table 문을 사용하여 기본 charset을 변경 한 후 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을 사용하면 쓸모 없거나 잘못 될 수 있습니다.