一 前言
在讨论数据表字段设计的时候,有同学提出使用vabinary 代替 varchar ,部分开发不明所以,其实我也是。两者之间具体有什么区别?使用vabinary 代替 varchar 对业务有何优势?本文尝试从性能,数据大小,查询,创建索引等对比功能等方面进行研究,有不妥或者不到位之处还请各位读者朋友提示。
二 对比测试
2.1 测试环境
数据库版本 Percona Server 5.6.24-72.2-log
2.2 定义
varchar(N) 字符串类型,用于存储变长字符串,使用表默认或者指定的校验集合,其中N代表存储字符的个数,详细信息请移步 《浅谈varchar(N)》.
varbinary(N)二进制字符串类型,以 二进制字节串存储字符,无字符集校验区别,均以二进制实际数值作比较。
2.3 长度定义
varchar存储的是字符个数,varbinary存储的是字节个数。
在讨论数据表字段设计的时候,有同学提出使用vabinary 代替 varchar ,部分开发不明所以,其实我也是。两者之间具体有什么区别?使用vabinary 代替 varchar 对业务有何优势?本文尝试从性能,数据大小,查询,创建索引等对比功能等方面进行研究,有不妥或者不到位之处还请各位读者朋友提示。
二 对比测试
2.1 测试环境
数据库版本 Percona Server 5.6.24-72.2-log
- create table vbinary
- (
- id int primary key auto_increment ,
- val varbinary(776) not null default ''
- ) engine=innodb default charset=utf8mb4;
-
- create table vachar
- (
- id int primary key auto_increment ,
- val varchar(12) not null default ''
- ) engine=innodb default charset=utf8mb4;
- insert into vbinary(val) values('abaa'),('aabb'),('bcdd'),('ccdd');
- insert into vachar(val) values('abaa'),('aabb'),('bcdd'),('ccdd')
varchar(N) 字符串类型,用于存储变长字符串,使用表默认或者指定的校验集合,其中N代表存储字符的个数,详细信息请移步 《浅谈varchar(N)》.
varbinary(N)二进制字符串类型,以 二进制字节串存储字符,无字符集校验区别,均以二进制实际数值作比较。
2.3 长度定义
varchar存储的是字符个数,varbinary存储的是字节个数。
- test [RW] 10:57:50 >insert into vbinary (val,name) value('2msdmlsdyo2enwlenw','disodmalsdsi');
- Query OK, 1 row affected, 1 warning (0.00 sec)
- test [RW] 10:57:55 >show warnings;
- +---------+------+------------------------------------------+
- | Level | Code | Message |
- +---------+------+------------------------------------------+
- | Warning | 1265 | Data truncated for column 'val' at row 1 |
- +---------+------+------------------------------------------+
- 1 row in set (0.00 sec)
- test [RW] 10:58:11 >insert into vbinary (val,name) value('有赞是一家移动零售服务提供商','disodmalsdsi');
- Query OK, 1 row affected, 1 warning (0.01 sec)
- test [RW] 10:59:00 >show warnings;
- +---------+------+------------------------------------------+
- | Level | Code | Message |
- +---------+------+------------------------------------------+
- | Warning | 1265 | Data truncated for column