Mysql

CHARSET 對只有 INT 的表很重要嗎?

  • February 4, 2021

我的伺服器預設CHARSETUTF-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,由於字元集,您唯一的表沒有任何特定差異,直到您添加使用它的列。

引用自:https://dba.stackexchange.com/questions/284665