text和blob

来源:互联网 发布:法律硕士有奖学金知乎 编辑:程序博客网 时间:2024/06/05 15:19

        上篇提到char和varchar,他们都是用来存储字符串的。而且它们是在保存少量字符串时用,比如用户名,密码。text和blob也是保存字符串的,它们用来保存较大文本时用,比如一篇博客内容,一张照片。

        text和blob的区别:

        1、blob能保存二进制数据,比如照片。text只能保存字符数据,比如一篇文章。

        2、text根据存储文本长度不同分为三种:Text、MediumText、LongText。

        3、blob根据存储字节不同分为三种:Blob、MediumBlob、LongBlob。

        在选用不同的数据类型时,可根据实际情况选择能满足需求的最小存储类型。节省空间。

        Blob和Text会引起一些性能问题(尤其是在执行了大量删除操作时):

        1、使用碎片整理(OPTIMIZE TABLE)可回收执行删除操作后留下的空洞

        text或blob在执行了删除操作后,会留下很大的“空洞”,以后再在“空洞”里进行插入时,性能慢。

        2、使用合成的索引提高查询性能

        合成索引就是根据大文本字段的内容建立一个散列值,并把这个值存储在单独的数据列中,然后就可以通过检索散列值找到数据行了。这种技术适用于精确匹配的查询。

若要进行模糊查询可用前缀索引。散列值的生成:可使用MD5()或者SHA1()、CRC32()生成散列值,也可以使用应用程序逻辑计算散列值。

        3、使用where约束条件避免检索大型的包含blob或text值的数据

        4、把blob或text列分离到单独的表中。

        以上内容出自《深入浅出mysql》

总结:

        阳光正好,适合总结。


原创粉丝点击