我有UTF-8字符串,我想存储在Mysql / MariaDB列中。我不能使用VARCHAR,因为每列的字符数限制。我远远超过了那个限度。
我知道包含我拥有的最大UTF-8字符串的最大字节数。读取使用CHAR或TEXT显示的文档将为每个字符分配3个字节(或UTF8MB4为4个字节)。因为我知道如果我将字符串存储在BLOB中,它的实际大小是否可行?这会起作用吗?这种方法有任何已知问题吗?
我正在使用带有InnoDB和UTF8MB4的MariaDB。
MEDIUMTEXT
可以处理1600万字节(至少400万utf8mb4 _characters)。这样就够了吗?
MEDIUMBLOB
也可以处理1600万字节。
在CHAR
和TEXT
上使用变体作为角色。这使您可以检查编码,比较,排序等。使用BINARY
和BLOB
上的变体来获取您不需要操作的字节 - 例如图像。
考虑使用FULLTEXT
索引有效地搜索TEXT
列中的特定单词。 LIKE
,MID()
等也使用大型TEXT
列,但不一定有效。
您的问题对于您要做的事情是不准确的。如果我没有给你足够的线索,请详细说明你的数据和查询要求。