特点

备注

char

php判断mysqlvarchar相同30MySQL中char和varchar的比拟 CSS

定长

如果小于定义的长度,会补空格

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则更好,效率影响不是很大。
感兴趣的朋友可以进行关注头条号留言谈论,欢迎点赞,转赞,讴歌。