首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认字符集的重要性

默认字符集的重要性
EN

Stack Overflow用户
提问于 2011-01-20 15:56:43
回答 1查看 930关注 0票数 0

我有一个4 GB的表,默认字符集设置为utf8,尽管我只保存latin1字符。我在测试机器上使用alter table语句将其更改为latin1。在数据文件log_details.MYD中没有注意到差异时,索引文件log_details.MYI减少了5%

我有几个问题:

1)我应该在生产时修改表吗?值得吗?

2)会不会提高选择速度?

3)我想,一旦我将默认字符集更改为latin1,我就可以拥有更长的索引。还有其他优势吗?

我还注意到,在使用alter table语句更改默认字符集之后,varchar列的类型也会自动更改。Item_ID varchar(32)字符集utf8如何避免这种情况?

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-20 19:34:52

性能可能是您最不应该关心的事情。您的客户端应用程序使用的是什么字符集?这些信息是用什么自然语言写的?这些都是你必须提出的问题。

如果您坚持使用Latin1,您将无法存储日语字符,但也无法存储一些常见的字符,如符号。另一方面,如果您的应用程序不能处理多字节输入,那么在数据库中使用UTF-8可能是无用的(或者完全错误的)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4744677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档