mysql中对于字符串精度 如 varchar(20)和varchar(255)对性能的影响分析
- 假设都用来存储10个字符,其存储空间相同,但是对于内存的消耗时不同的。
- 对于varchar类型来说,硬盘上的存储空间虽然都是根据实际字符长度来分配的,即对于物理存储空间没有影响
- 但对于内存来说,是使用固定大小的内存块来保存值,简单来说,就是用字符串类型中定义的长度,即255个字符空间,显然这对于排序或者临时表作业会产生不利的影响,为了考虑冗余,可以考虑10%左右的字符长度。
- 索引如果没有指定长度也会默认采用对应字段的长度,varchar(100)比varchar(10)建立的索引存储大小大的多,使用的内存也更多
结论:字符串类型字段的定义,不要过长,一般比实际长度大10%即可。图省事如所有都定义成255长度或者text,在数据量较大或进行较为复杂的查询计算时,会降低查询的效率