当我创建一个表时,即使它仅使用整数,我也会将默认字符集设置为 utf8(因为我复制粘贴代码,并且以防万一我将来引入字符串列)。
示例:
CREATE TABLE IF NOT EXISTS `articles` (
`id` smallint(6) unsigned NOT NULL,
`disabled` tinyint(1) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
但是,我想知道在不使用它的表中使用默认字符集是否会影响“性能”。
最佳答案
无论如何,表都有一个字符集,所以不,不存在性能问题,并且 UTF-8 是一个很好的默认选择( but utf8
is not )。但你仍然不应该这样做。
添加默认字符集是一种不好的做法,除非您需要指定一个字符集。这会覆盖数据库的默认字符集,该字符集可能不是 utf8
。您可能会冒着创建一个与其他表不同的字符集的表而导致困惑的风险。
相反,请确保服务器和数据库字符集设置正确。然后让您的表使用默认值,除非您有特殊原因不这样做。
例如,UTF-8 是一个不错的默认选择,但是 MySQL got UTF-8 wrong 。 utf8
无法处理所有 UTF-8。您应该使用 utf8mb4
(UTF-8 4 字节)。数据库可能正确使用 utf8mb4
,但您使用功能较弱的字符集覆盖它。
参见Specifying Character Sets and Collations和 Unicode Support .
关于mysql - 使用默认字符集创建仅整数表,坏主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66374320/