• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql怎么存储大段文字

mysql 搞java代码 3年前 (2022-05-16) 17次浏览 已收录 0个评论

一般在保存少量字符串的时候,我们会选择 CHAR 或者 VARCHAR;而在保存较大文本时,通常会选择使用 TEXT 或者 BLOB,二者之间的主要差别是 BLOB 能用来保存二进制数据,比如照片;而 TEXT 只能保存字符数据,比如一篇文章或者日记。

(推荐教程:mysql数据库学习教程)

TEXT 和 BLOB 中有分别包括TEXT、MEDIUMTEXT、LONGTEXT 和 BLOB、MEDIUMBLOB、LONGBLOB3 种不同的类型,它们之间的主要区别是存储文本长度不同和存储字节不同,用户应该根据实际情况选择能够满足需求的最小存储类型。

BLOB 和 TEXT 值会引起一些性能问题,特别是在执行了大量的删除操作时.可以使用合成的(Synthetic)索引来提高大文本字段(BLOB 或 TEXT)的查询性能;如果散列算法生成的字符串带有尾部空格,就不要把它们存储在 CHAR 或 VARCHAR 列中,它们会受到尾部空格去除的影响。

合成的散列索引对于那些 BLOB 或 TEXT 数据列特别有用。用散列标识符值查找的速度比搜索BLOB列本身的速度快很多。

create table t_synthetic (id varchar(100),context <a href="https://www.gaodaima.com/tag/blob" title="查看更多关于blob的文章" target="_blank">blob</a>,hash_value varchar(40));
insert into t_synthetic values(1,'beijingbeijing',md5(con<a href="https://www.gaodaima.com/tag/text" title="查看更多关于text的文章" target="_blank">text</a>));
insert into t_synthetic values(2,repeat('beijing',2),md5(context));
insert into t_synthetic values(3,repeat('beijing 2008',2),md5(context));
SELECT * from t_synthetic where hash_value = MD5(repeat('beijing',2));

www#gaodaima.com来源gaodai$ma#com搞$代*码*网搞代码

合成索引的用法,由于这种技术只能用于精确匹配,在一定程度上减少 I/O,从而提高查询效率。如果需要对 BLOB 或者 CLOB 字段进行模糊查询,MySQL 提供了前缀索引,也就是只为字段的前 n 列创建索引,举例如下

CREATE INDEX idx_blob ON t_synthetic(context(100));
desc select * from t_synthetic where context like 'beijing%'

在不必要的时候避免检索大型的 BLOB 或 TEXT 值。把 BLOB 或 TEXT 列分离到单独的表中。

来源:搞代码网:原文地址:https://www.gaodaima.com


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql怎么存储大段文字

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址