Mysql 使用 CHAR 或 BLOB 存储已知字节大小限制的 UTF-8 字符串

标签 mysql utf-8 mariadb blob innodb

我想将 UTF-8 字符串存储在 Mysql/MariaDB 列中。由于每列字符数的限制,我无法使用 VARCHAR。我已经远远超出了这个限度。

我知道包含最大 UTF-8 字符串的最大字节数。使用 CHAR 或 TEXT 读取出现的文档将为每个字符分配 3 个字节(对于 UTF8MB4 为 4 个字节)。因为我知道实际大小,如果我将字符串存储在 BLOB 中,它会起作用吗?这会起作用吗?此方法有任何已知问题吗?

我将 MariaDB 与 InnoDB 和 UTF8MB4 结合使用。

最佳答案

MEDIUMTEXT 可以处理 1600 万个字节(至少 400 万个 utf8mb4 字符)。这样就够了吗?

MEDIUMBLOB 还可以处理 1600 万字节。

字符使用CHARTEXT的变体。这可以让您检查编码、比较、排序等。对于不需要操作的字节(例如图像),使用 BINARYBLOB 的变体。

考虑使用 FULLTEXT 索引来高效搜索 TEXT 列中的特定单词LIKEMID() 等也适用于大型 TEXT 列,但不一定高效。

您的问题对于您想要做的事情不准确。如果我没有给您足够的线索,请详细说明您的数据和查询需求。

关于Mysql 使用 CHAR 或 BLOB 存储已知字节大小限制的 UTF-8 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52678050/

相关文章:

html - 如何在 UI 上正确显示阿拉伯语或西类牙语 Mojibake 字符

mysql - 错误 1267 (HY000) : Illegal mix of collations

php - MYSQL 无法在不同的表上加载 OR 运算符

PHP/MySQL > 6.99 x 100 = 600?

具有 7 个表的 MySql 内部连接查询

mysql - 在 MySQL/MariaDB 中将 CHAR 主键转换为 INT

php - 如何使用数组值查询mysql/mariadb

mysql - 将所有用户踢出mysql数据库

php -  编码问题

delphi - 在 Delphi 中将 UTF8 转换为 ANSI (ISO-8859-1)