数据库中varchar和char的比较
部分信息转自别处..... 一.数据存储开销 1.char(n) 是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。 在程序中,会返回给你8位,后面的用空格补上
部分信息转自别处.....
一.数据存储开销
1.char(n) 是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。
在程序中,会返回给你8位,后面的用空格补上;
在数据库中,char(8),占用16个字节(1个字符=2个字节);
2.varchar(n) 是长度为 n 个字节的可变长度且非 Unicode 的字符数据。n必须是一个介于1和 8000之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。
二.插入数据
1.char列的NULL值占用存储空间。
2. varchar列的NULL值不占用存储空间。
插入同样数量的NULL值,varchar列的插入效率明显高出char列。
插入不为null的数据时,无论插入数据涉及的列是否建立索引,varchar列的插入效率也是明显高出char列。
三.更新数据
如果更新的列上未建立索引,则char的效率低于varchar,但效率差异不大。
如果更新的列上建立索引,则char的效率低于varchar,并且效率差异很大。
四.修改结构
无论增加或删除的列的类型是char还是varchar,操作都能较快的完成,而且效率上没有什么差异。
对于增加列的宽度而言,char与varchar有非常明显的效率差异,varchar列基本上不花费时间,而修改char列需要花费很长的时间。
五.数据检索
无论是否通过索引,varchar类型的数据检索略优于char的扫描。
那实际开发中,我们使用哪种呢?
当确定字符串为定长、数据变更频繁、数据检索需求少时,使用char;
当不确定字符串长度、对数据的变更少、查询频繁时,使用varchar。
推荐阅读
-
Oracle中的Char与Varchar的区别和实例
-
关于PHP5和PHP7中数组实现方式的比较总结
-
MySQL 5.1中varchar类型中文和英文长度的问题
-
设计一个算法:用不多于3n/2的平均比较次数,在数组A[1,...,n]中找出最大值和最小值的元素
-
JavaEE基础day02 1.定义Java中的变量 四类八种 2.变量定义和使用的注意事项 3.数据类型的转换、强制数据类型转换4.算数运算符、比较运算符、逻辑运算符、赋值运算符、三元运算符
-
MySQL中CHAR和VARCHAR类型演变和详解
-
MySQL数据库中把int转化varchar引发的慢查询
-
Mysql数据库中把varchar类型转化为int类型的方法
-
MySQL中CHAR和VARCHAR类型演变和详解
-
Hibernate中Session.get()方法和load()方法的详细比较