盾怪网教程:是一个免费提供流行杀毒软件教程、在线学习分享的学习平台!

所有方面知道MySQL中的数据分类

时间:2025/3/12作者:未知来源:盾怪网教程人气:

[摘要]+----------------+----------------+1 row in set (0.35 sec)由于char是固定长度的,所以它的处理速度比varchar快的多,但其缺点是浪费存...
+----------------+----------------+ 1 row in set (0.35 sec)


由于char是固定长度的,所以它的处理速度比varchar快的多,但其缺点是浪费存储空间,程序需要对尾部空格进行处理等缺点,所以多那些长度变化不大并且对查询速度有较高要求的的数据可以考虑使用char类型来存储。随着MySQL版本的不断升级,varchar数据类型的性能也将不断提升,varchar类型的应用范围更加广泛。

在MySQL中,不同的存储引擎对char和varchar的使用原则有所不同:

(1)、在MyISAM存储引擎中,建议使用固定长度的字段类型代替可变长度的字段类型。
(2)、在Memory存储引擎中,目前都是用固定长度的数据行存储,因此无论是char还是varchar类型,都将转化为char类型处理。
(3)、在InnoDB存储引擎中,建议使用varchar类型。

二、TEXT和BLOB

在保存少量字符串的时候,可以使用char和varchar数据类型。在保存较大的文本时,通常会选择使用text或BLOB。两者之间的主要差别是:BLOB能用来保存二进制数据,例如:照片,而text只能用于保存字符类型数据。text和BLOB中又分别包括text、mediumtext、longtext和blob、mediumblob、longblob三种不同的类型。它们之间的主要区别是存储文本的长度不同和存储字节不同。

使用BLOB和TEXT类型应注意的一些问题:

(1)、BLOB和TEXT会引起一些性能问题,特别是在执行了大量的删除操作时。删除操作会在数据表中留下很大的“空洞”,以后填入这些“空洞”的记录在插入性能上会有影响。为了提高性能,应定期使用OPTIMIZETABLE功能对这类表进行碎片整理,避免空洞导致性能问题。

(2)、使用合成的索引来提高大本文字段的查询性能。所谓合成索引就是根据大文本字段的内容建立一个散列值,并把这个值存储在单独的数据列中,然后就可以通过散列值找到数据行了。例如:

mysql> create table t (id varchar(100),content blob,hash_value varchar(40));
Query OK, 0 rows affected (0.03 sec)

mysql> insert into t values (1,repeat('beijing',2),md5(content)); 
Query OK, 1 row affected (0.33 sec)

mysql> insert into t values (2,repeat('beijing',2),md5(content)); 
Query OK, 1 row affected (0.01 sec)

mysql> insert into t values (2,repeat('beijing 2008',2),md5(content));
Query OK, 1 row affected (0.01 sec)

mysql> select * from t;
+------+--------------------------+----------------------------------+

关键词:所有方面知道MySQL中的数据分类




Copyright © 2012-2018 盾怪网教程(http://www.dunguai.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版