微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

优化:在 MySQL 列中存储 ISO 639-3 语言int language_id 或 varchar 语言

如何解决优化:在 MySQL 列中存储 ISO 639-3 语言int language_id 或 varchar 语言

我有一个需要大规模快速运行的 MysqL 数据库

选项 1 表可以将语言 ISO 639-3 代码存储为列:varchar(3) 语言

选项 2 表可以将语言的 ID 存储为一列:int(2?) language_id,并且可以有一个带有 ISO 639-3 代码的语言表。

问题 规模化速度的意义何在?选项 1 在数据库中更容易阅读。如果速度相同或即使在规模上也完全可以忽略不计,我更喜欢它。

谢谢!

解决方法

我推荐:

CREATE TABLE ...
    ISO_630_3 CHAR(3) CHARACTER SET ascii

这将是 3 个字节,小于 INT(4 个字节)and not much bigger thanSMALLINT UNSIGNED`(2 个字节)。

(我说代码总是 3 个 ascii 字母是否正确?因此不需要 VAR,它需要一两个额外的字节。)

CHAR(3) 很容易索引。即使对 smallint 进行“标准化”也没有明显的优势。即使在 10 亿行的规模下,这仍然适用。

而且,正如您所指出的,“更容易阅读”是值得的。

如果您还存储文本,我假设所有此类文本都可以映射到 UTF-8?如果是这样,请使用

     my_text TEXT CHARACTER SET utf8mb4

在 MySQL 中,使用不同的字符集(或排序规则)在单个表中具有不同的列是没有问题的。

也许值得注意...从十六进制 utf-8 编码中可以发现许多语言:

⚈  Cxyy -- More Western Europe: Latin (C3-CA),Combining Diacritical Marks (CC-CD),Greek (CE-CF)
⚈  Dxyy -- Cyrillic (D0-D4),Hebrew (D6-D7),Arabic/Persian/Farsi (D8-DB),etc
⚈  E0yyyy -- various Indian character sets,southern Asia,etc.
⚈  E1yyyy -- Cherokee,Balinese,Khmer,Mongolian,Vietnamese,etc.
(etc)

-- http://mysql.rjweb.org/doc.php/charcoll#diagnosing_charset_issues

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?