我想将 UTF-8 字符串存储在 Mysql/MariaDB 列中。由于每列字符数的限制,我无法使用 VARCHAR。我已经远远超出了这个限度。
我知道包含最大 UTF-8 字符串的最大字节数。使用 CHAR 或 TEXT 读取出现的文档将为每个字符分配 3 个字节(对于 UTF8MB4 为 4 个字节)。因为我知道实际大小,如果我将字符串存储在 BLOB 中,它会起作用吗?这会起作用吗?此方法有任何已知问题吗?
我将 MariaDB 与 InnoDB 和 UTF8MB4 结合使用。
最佳答案
MEDIUMTEXT
可以处理 1600 万个字节(至少 400 万个 utf8mb4 字符)。这样就够了吗?
MEDIUMBLOB
还可以处理 1600 万字节。
对字符使用CHAR
和TEXT
的变体。这可以让您检查编码、比较、排序等。对于不需要操作的字节(例如图像),使用 BINARY
和 BLOB
的变体。
考虑使用 FULLTEXT
索引来高效搜索 TEXT
列中的特定单词。 LIKE
、MID()
等也适用于大型 TEXT
列,但不一定高效。
您的问题对于您想要做的事情不准确。如果我没有给您足够的线索,请详细说明您的数据和查询需求。
关于Mysql 使用 CHAR 或 BLOB 存储已知字节大小限制的 UTF-8 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52678050/