mysql - VARCHAR与VHAR的区别
2024-09-04 14:33:35
一, 基本介绍
char 和 varchar 两类型类似, 用来存储字符串,不同之处来自于他们的保存和检索的差别, char 属于固定的长度字符类型, 而varchar 属于可变长度的字符类型
值 | CHAR(4) | 存储需求 | VARCHAR(4) | 存储需求 |
'' | ' ' | 4个字节 | '' | 1个字节 |
'ab' | 'ab ' | 4个字节 | 'ab ' | 3个字节 |
'abcd' | 'abcd' | 4个字节 | 'abcd' | 5个字节 |
'abcdefg | 'abcd' | 4个字节 | 'abcd' | 5个字节 |
二, 实战介绍
创建表:
CREATE TABLE vc (v VARCHAR(4), c CHAR(4))
插入数据 INSERT INTO vc VALUES('ab ','ab ') 查看 SELECT CONCAT(v, '+'),CONCAT(c, '+') FROM vc;
由于char是固定的长度的,所以处理速度比varchar快的多,但是缺点是特别浪费存储空间的,程序也需要对威航空格惊醒处理,所以对于那些长度变化不大并且对查询速度有较高的数据就考虑char类型来存储
三, 存储引擎使用
- MyISAM存储引擎: 建议使用固定长度的数据列代替峨边长度的数据列
- MEMORY存储引擎: 目前都是用固定长度的数据行存储,因此无论使用char或者varchar列都没有关系.两者都是作为char类型处理
- InnoDB 存储引擎: 建议使用varchar类型. 对于innodb数据表.内部的行存储格式没有区分固定长度的可变长度列(所有数据行都是用指向数据列值的头指针), 因此在本质上,使用固定长度的char列不一定比使用可变长度varchar列性能要好,因此, 主要的性能因数是数据行使用的存储总量. 由于char平均占用的口昂见多余varchar, 因此使用varchar来最小化需要处理的数据行的存储总量和磁盘i/o是比较好的
最新文章
- 桌面秀:以ubuntu主为的开发桌面环境
- 转载文章(Redis中对key的操作)
- STL之deque
- 1Z0-053 争议题目解析606
- es6 import export 与 node 中的module.exports exports
- 何为babel / gulp
- 第七章 consul docker集群
- 程序员DNS知识指南
- iOS OC语言: Block底层实现原理 (转载)
- OleDb 读取 excel
- System.Drawing.Image.Save(Savepath),保存为jpg格式,参数错误,文件0kb解决办法
- QT正则表达式
- 简单的mvc之三:灵活的路由(上)
- 做一个360度看车的效果玩玩(web)
- docker 11 docker的commit操作
- 自学Python之路-Python核心编程
- failed to install tomcat6 service ,check your setting and permissions
- 搭建简单SBT工程实践
- Latex数学公式中的空格
- Error: [ng:areq] Argument 'LoginCtrl' is not a function, got undefined