问题补充说明:如题,谢谢
1、处理速善久另路历剧号用住维小度
char和相同长度的varchar处理速度差不多。varchar的长度不会影响处理速度;
2、string
O/RMapping中对应实体的属性类型一般是以的而主助更还胡把轴言string居多,用旧误大菜料识小强绿char[]的非常少,所航列述以如果按mapping的合理性钱存克料弦跟民长来说,可变长度的类型更加吻合;varchar的存放和string是一样原理的,即length{block}这种方式,所以varchar的长度和它实际占用空间镇含志把鱼坐整是无关的;
3、查询成本
char和varchar的比较成本是一样的,现在盟关键就看它们的索引查找的成本了,因为查找策略都一样,因此应该比较谁占用剧末节项听绿四套图认空间小。
例:
在存放相同数量的字符情况下,如果数量小,那么char占用长度是小于varchar企的,但如果数量稍大,则varchar完全可能小于char,而且要看实际填充数值的充烟厚地重武张实度,比如说varchar(3)和char(3),那么理论上应该是char快了,但如果是char(10)和类解沙背犯层经跑垂食varchar(空承10),充实度只有30%的情船品投况下,理论上就应该是varc真将妒极旧衡谈施女名读har快了。
因为varchar需要额外空间存放来皮取未音记领剧美富土块长度,所以只要length(1-fi似llfactor)大于这个存放空间(好像是2字节),那么它就会比相同长度的char快了。
扩额负洋眼联阿学移交胶展资料:
1、如果数据量非常大,又能100%确定长度且保存只是ansi字符,那么char;
2、能确定长度又不一定入该停是ansi字符或者,那么用nchar;
3、不确定长度,要查询且希望利用索引的话,用nvarchar类型吧,将它们设到400;
4、不查询的话没什么好说的,用nvarchar(4000);
5、性格豪爽的可以只用3和4,偶尔用用1,毕竟这是一种额外说明,等于告诉别人说,我一定需要长度为X位的数据。
标签:char,varchar,varchar2