数据库中char,varchar,nvarchar的区别
来源:互联网 发布:上位机编程视频 编辑:程序博客网 时间:2024/06/10 05:46
1. char
固定长度字符串,最长n个字符。例如char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。
2. varchar
长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。
3. nvarchar
包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。
char和varchar的区别:
varchar节省空间,char效率(efficiency)稍高些。
说varchar比char效率稍差,是因为,当修改varchar数据时,可能因为数据长度不同,导致数据迁移(即:多余I/O)。其中,oracle对此多余I/O描述的表达是:“行迁移”(Row Migration)。
“行迁移”(Row Migration):
“行迁移”(Row Migration):
“当一行的记录初始插入时是可以存储在一个block中的,由于更新操作导致行增加了,而block的自由空间已经完全满了,这个时候就产生了行迁移。在这种情况下,oracle将会把整行数据迁移到一个新的block中,oracle会保留被迁移的行的原始指针指向新的存放行数据的block,这就意味着被迁移行的ROW ID是不会改变的。"
其中要解释一下:block是oracle中最小的数据组织与管理单位,是数据文件磁盘储存空间单位,也是数据库I/O最小单位(也就是说,读和写都是一个block打大小,所以如果block没满时,更新内容长度变更的varchar字段,和更新内容长度没变的varchar字段,I/O次数是一样,不存在额外消耗,只有在block满时,才会出现额外I/O,所以char和varchar性能之间的性能差异,是相当细微的,绝大多数情况下可以忽略不计,所以上文描述的“稍”差的含义)。
其中要解释一下:block是oracle中最小的数据组织与管理单位,是数据文件磁盘储存空间单位,也是数据库I/O最小单位(也就是说,读和写都是一个block打大小,所以如果block没满时,更新内容长度变更的varchar字段,和更新内容长度没变的varchar字段,I/O次数是一样,不存在额外消耗,只有在block满时,才会出现额外I/O,所以char和varchar性能之间的性能差异,是相当细微的,绝大多数情况下可以忽略不计,所以上文描述的“稍”差的含义)。
所以varchar几乎可以完全替代char。
varchar和nvarchar的区别
varchar是按字节存储的,而带n的nvarchar是按字符存储的。
一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar。
总结:
a. char和varchar的性能差距很小
b. 如果存储大量的数据,插入和varchar可能导致大量的存储空间浪费。
0 0
- 数据库中char,varchar,nvarchar的区别
- 数据库中char、nvarchar和varchar区别
- sql server数据库中char,varchar,nvarchar字段的区别
- sql server数据库中char,varchar,nvarchar字段的区别
- 数据库中char varchar nchar nvarchar的区别
- 数据库 char,varchar,nvarchar的区别
- SQL中char、varchar、nvarchar的区别
- SQL中char、varchar、nvarchar的区别
- SQL中char、varchar、nvarchar的区别
- sql中char,varchar ,nvarchar 的区别
- SQL中char、varchar、nvarchar的区别
- SQL中char、varchar、nvarchar的区别
- SQL中char、varchar、nvarchar的区别
- SQL中char、varchar、nvarchar的区别
- SQL中char、varchar、nvarchar的区别
- SQL 中char,varchar,nvarchar的区别
- SQL中char、varchar、nvarchar的区别
- SQL中char、varchar、nvarchar的区别
- TCP的三次握手/四次挥手
- 《UNIX环境高级编程》学习笔记——进程控制(二)
- 详细解析Java中抽象类和接口的区别 abstract class和interface
- NAT原理
- iOS的四种方法读取文件内容
- 数据库中char,varchar,nvarchar的区别
- 变量的存储类型
- Google C++ 编程规范——学习笔记(一)
- VS2010下Cannot find or open the PDB file (转)
- sort 及 priority_queu 中struct结构体的重载<排序
- USACO 2.1.3 Sorting a Three-Valued Sequence(枚举)
- 输入一个整数,如果该整数x符合条件:-1<x<10,则输出“ok”,否则输出“not ok”
- 安卓TextView滚动字幕实现跑马灯
- 开源项目侧边栏菜单(SlidingMenu)深入剖析