特点
备注
char
定长
如果小于定义的长度,会补空格
vchar
变长
不会补空格
3.取数据的差异:类型
特点
备注
char
trim()去空格
vchar
保留空格
把稳:比拟数据的时候不会考虑尾部的空格
4.测试性能比较:100万数据样本
无索引
有索引
创建索引耗时
c8=char(8)
312.0ms
0.271ms
2439ms
s8=varchar(8)
334.3ms
0.2354ms
2442ms
i8=(bigint)
276.95ms
0.2189ms
1645ms
c4=char(4)
354.95ms
0.303ms
2296ms
s4=varchar(4)
340.45ms
0.3094ms
2303ms
i4=int(4)
291.1ms
0.25ms
1403ms
结论:无索引:全表扫描不会由于数据较小就变快,而是整体速率相同,int/bigint作为原生类型稍快12%。有索引:char与varchar性能差不多,int速率稍快18%
在数据存储、读写方面,整数与等长字符串相同,varchar额外多了一个字节以是性能可能会些许影响(1/n)。在数据运算、比拟方面,整数得益于原生支持,因此会比字符串稍快一丁点。若采取索引,所谓整数、字符串的性能差距更是微乎其微。
在实际开拓中,许多开拓者常常利用char(1)、char(4)这样的字符串表示类型列举,这种做法在存储空间、运算性能、可读性、可掩护性、可扩展性方面,远胜于int、enum这种数据类型。我的总结是当确定长度的时候能利用char则利用,如果确实不是100%确定,那么利用varchar则更好,效率影响不是很大。感兴趣的朋友可以进行关注头条号留言谈论,欢迎点赞,转赞,讴歌。