我的服务器默认CHARSET
是UTF-8
(在 my.cnf 中设置)。我创建像
CREATE TABLE t1
(
ID int(11) unsigned NOT NULL AUTO_INCREMENT,
Title varchar(255),
PRIMARY KEY(ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci KEY_BLOCK_SIZE=2
但有些表只有int
列。对他们使用latin
字符集是否有益?还是让所有表都带有UTF-8
字符集以保持一致性更好?
CREATE TABLE t2
(
ID int(11) unsigned NOT NULL,
TagID int(11) unsigned NOT NULL,
PRIMARY KEY(ID,TagID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci KEY_BLOCK_SIZE=1
对比
CREATE TABLE t2
(
ID int(11) unsigned NOT NULL,
TagID int(11) unsigned NOT NULL,
PRIMARY KEY(ID,TagID)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_swedish_ci KEY_BLOCK_SIZE=1
表的字符集和排序规则会影响该表中新创建的列。它还影响没有指定字符集/排序规则的字符/文本列。
因此
int
,由于字符集,您唯一的表没有任何特定差异,直到您添加使用它的列。