varchar(n),nvarchar(n) 长度、性能、及所占空间分析
来源:互联网 发布:sql 查询排名的名次 编辑:程序博客网 时间:2024/05/18 00:09
varchar(n),nvarchar(n) 中的n怎么解释:
nvarchar(n)最多能存n个字符,不区分中英文。
varchar(n)最多能存n个字节,一个中文是两个字节。
所占空间:
nvarchar(n)一个字符会占两个字节空间。
varchar(n)中文占两字节空间,英文占一个。
n的取值范围:
nvarchar(n) n的范围是:1与4000之间
varchar(n) n的范围是:1与8000之间
n的大小是否会影响性能:
varchar及nvarchar里的长度 n 不会影响空间大小及性能。除非n是max并且内容大于4000或8000
设置n更多的是业务需要,如限制身份证只能输入18位,再多就报错,或者防止恶意攻击撑爆硬盘。对空间及性能都没有影响
n设置多大比较好:
既然对空间及性能都没有影响,那我们只要考虑业务需要就可以了,我分析过微软的数据库,大都设置为:256,也会看到64,128,512,max等,可能是便于记忆吧。
varchar(n),nvarchar(n)存储空间举例解释:
包含 n 个字符的可变长度 Unicode 字符数据。字节的存储大小是所输入字符个数的两倍。
两字段分别有字段值:我和coffee
那么varchar字段占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间。
如字段值只是英文可选择varchar,而字段值存在较多的双字节(中文、韩文等)字符时用nvarchar。
varchar和nvarchar如何选择?
varchar在SQL Server中是采用单字节来存储数据的,nvarchar是使用Unicode来存储数据的.中文字符存储到SQL Server中会保存为两个字节(一般采用Unicode编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会占用一个字节,而如果字段的类型为nvarchar,则会占用两个字节.
正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操作系统并且对中文字体的支持不全面时, 在SQL Server存储中文字符为varchar就会出现乱码(显示为??).而且正常情况下,主机都会支持中文的环境,所以如果使用varchar来存储数据,在开发阶段是发现不了的.多数情况下,在布署的时候也不会有问题.
但是!如果布署的主机是英文操作系统,并且不支持中文环境,那问题就出来了.所有的varchar字段在存储中文的时候都会变成乱码(显示为??).而且一般情况下你不会知道这是因为你采用了错误的数据类型来存储所造成的,你会试着去装中文字体,试着去设置操作系统的语言环境...这些都不能解决问题,唯一能解决问题的是把数据库字段的类型个性为nvarchar(或者nchar).对项目管理比较熟悉的朋友应该都知道,到布署阶段再来修改数据库是一个很恐怖的事情.
使用nvarchar的另一个非常好处就是在判断字符串的时候可以不需要考虑中英文两种字符的差别.
当然,使用nvarchar存储英文字符会增大一倍的存储空间.但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更多好处的.
所以在Design的时候应该尽量使用nvarchar来存储数据.只有在你确保该字段不会保存中文的时候,才采用varchar来存储.
- varchar(n),nvarchar(n) 长度、性能、及所占空间分析
- varchar(n),nvarchar(n) 长度、性能、及所占空间分析
- varchar(n),nvarchar(n) 长度、性能、及所占空间分析
- varchar(n),nvarchar(n) 长度、性能、及所占空间分析
- varchar(n),nvarchar(n) 长度、性能、及所占空间分析
- varchar(n),nvarchar(n)区别
- nvarchar(n)及nvarchar(max)中的n及max是否会影响性能 实例分析
- varchar[(n)] 和nvarchar(n) 及使用unicode的意义
- nchar[(n)], nvarchar[n|max], char[(n)], varchar[(n|max)] 详解
- MySQL数据库数据类型(char(n),varchar(n),nchar(n),nvarchar(n)的区别)
- DBA30问之CHAR(N),NCHAR(N),VARCHAR(N),NVARCHAR(N)四种类型之间的区别
- 分析所有表所占空间情况
- 分析对象所占空间大小
- varchar是按字节存储的.而带"n"的nvarchar是按字符存储的
- 关于varchar与nvarchar的“N”,特殊字符没法存储怎么办
- C语言 数组、字符串长度及所占内存
- MySQL中的varchar(N)
- varchar 所占内存的影响 测试
- JAVA开发入门
- IT职场人生系列之二十一:如何学习新语言(一)
- 0.asm-8086汇编
- DevExpress AspxGridView Confirm with CustomButton click
- FireMonkey研讨会成功举行
- varchar(n),nvarchar(n) 长度、性能、及所占空间分析
- 2012-4-5
- sqlserver排序规则
- android屏幕单位----真机与模拟器获取同一图片显示大小不一样
- 黑马程序员--关于银行调度系统的笔记
- ubuntu分区错误
- sIEve 调试js内存泄露
- 我的青春里有你的爱 ——《将爱》影评
- 文件的复制