本文来源于翁舒航的博客,点击即可跳转原文观看!!!(被转载或者拷贝走的内容可能缺失图片、视频等原文的内容)
若网站将链接屏蔽,可直接拷贝原文链接到地址栏跳转观看,原文链接:https://www.cnblogs.com/wengshuhang/p/9933818.html
我们平常mysql数据库一些定长的字段用char, 一些不定长的数据用varchar,事实上,一般varchar的字段查询速度都比char高。 但是有一个问题,既然varchar的长度是根据实际数据的长度进行存储的,那为什么我们不能一直用varchar(8000)或者varchar(max)呢,总结了以下几点: 1、第一,数据库运行时,字段占据了内存空间以及磁盘空间,磁盘中是根据数据的实际长度(n:n+1, max:n*2)进行存储的,而varchar(n)则占据着内存的n长度字节的空间,max = 2^32 -1 = 65535 2、第二、抛开空间不说,字段长度有利于让我们开发者从字段名意义上理解分析字段的意义以及作用,试想一下一整个数据库都是varchar(8000),开发看数据库时候不会晕吗,看着这些字段都不知道有什么区别,只是字段名不一样,也不知道作用(当然有文档,但你也不可能记住所有字段意思或者说你是刚开始理解别人的项目),不会害怕写错数据啥的吗。 3、第三、没有限定住字段长度可能会产生垃圾数据------这也有可能产生一种后果,被恶意攻击,存入了超大的数据来占满磁盘空间。 long long after ps: 数据库中 定义 varchar长度其实一般都是用来限制字段逻辑的长度的,多长对数据库真的没啥破影响, 另外varchar(256+) 会比 varchar(255-) 多占用一字节空间计算长度的 因为 2^8 = 256(0-255),超出255,就得用两位去计算长度了 这时候能标识的字符串长度为 256 *256 = 65536 了。 不过数据库存储 高于 8000的字符串一般都用 text形式的吧 。 如果定义个 256长度的 还不如直接定义255 毕竟能输入的长度最大范围都是 254,用256就白白浪费一字节空间。