mysql - 使用默认字符集创建仅整数表,坏主意?

标签 mysql percona

当我创建一个表时,即使它仅使用整数,我也会将默认字符集设置为 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 wrongutf8 无法处理所有 UTF-8。您应该使用 utf8mb4 (UTF-8 4 字节)。数据库可能正确使用 utf8mb4,但您使用功能较弱的字符集覆盖它。

参见Specifying Character Sets and CollationsUnicode Support .

关于mysql - 使用默认字符集创建仅整数表,坏主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66374320/

相关文章:

python - 重复列名 'model_id' django mysql 迁移错误

php - 与搜索表单相关的自定义搜索查询

.net - Windows 上的 Percona Server 5.5 或 MariaDB

mysql - 我在远程服务器上安装了 PMM 服务器 percona 软件包,现在如何访问 grafana 仪表板/界面?

mysql - 使用percona xtrabackup将Mysql数据库迁移到AroraDB

mysql - 我可以在同一台服务器上同时运行 Percona 和 MySQL 吗?

javascript - 使用 AJAX/PHP 让 HTML 按钮将数据插入 MySQL 数据库

php - 存储 GZIP :ed text in mysql?

mysql - 如何让 mysql CASE 或 IF 跳过一条记录?

php - 将 php/mysql 列输出显示为行