2011-01-20 13 views
0

latin1文字のみを保存していますが、私は4 GBのテーブルを持ち、デフォルトの文字セットはutf8に設定されていました。 テストマシンでalter table文を使ってlatin1に変更しました。 差はなかった一方でlog_details.MYIは5%減少したインデックスファイルはデータファイルに記録は、私はいくつか質問していデフォルトの文字セットの重要性

をlog_details.MYD:

1)私は、生産上のテーブルを変更する必要がありますか?その価値はありますか?

2)選択速度が向上しますか?

3)デフォルトの文字セットを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を使用することは役に立たないかもしれません。

関連する問題