我对拉丁语与utf8的理解如下:
“latin仅支持拉丁字符(如英语),但utf8支持所有国际语言,如法语、中文、阿拉伯语等(甚至不完全支持,因为它每个字符使用3个字节,而应该使用每个字符4个字节来照顾)所有国际 utf8 字符)。根据标准拉丁语在 1 个字节中存储 1 个字符,而 utf8 在 1-3 个字节中存储 1 个字符。但是如果我们将所有字符存储在拉丁语中,即使在 utf8 类型列中,那么它将在 1 个字节中存储 1 个字符。 ”
latin vs utf8 索引:“列值根据列中的每个字符和字符集类型采用字节,但索引始终以字节为单位存储值。”
请有人解答我的以下疑问,我将非常感激。
假设有一个 title varchar(250) 列,并且其上有一个索引,如 Alter table mytable add index (title(16)) in utf8 charset type table;
如果此列包含字符串“This is my Title”,其中包含 16 个字符且全是拉丁文。然后清除以下查询:
1) 由于字符串包含 16 个字符且均为拉丁类型,因此即使表字符集是 utf8 或其他字符,它也只能存储 16 个字节。
2) 16 个字节的索引足以处理这 16 个字符的字符串,否则。
谢谢
扎法尔
最佳答案
1) 是的。 2)是的。
请注意,“latin”不是字符编码。人们通常称之为 latin-something 的编码,例如 MySQL 的“latin1”,包含以 UTF-8 编码时需要 2 或 3 个字节的字符。它是 ASCII 字符,可以用 UTF-8 中的一个字节来存储。
关于mysql - Latin 与 utf8 字符集和索引使用(mysql 5.5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21720990/