上篇提到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》
总结:
阳光正好,适合总结。