经过我的测试,发现
设置表userinfo的字段releas
分别为:varchar(25) default null、varchar(25) not null default ''、char(25) not null default ''
在数据量44460的时候,表userinfo占用的空间相同,根据releas字段模糊查询的速率相同。
这是为什么?是数据量太少,还是测试的方式不对,还是其他的原因?
注:测试环境
下面是测试的过程,谁能给解释一下?
1、数据量
2、表结构
3、表占用空间
4、将表转储为sql文件
表的大小:9.799K
5、模糊查询releas
6、修改表releas字段:varchar(25) default null->varchar(25) not null default ''
7、模糊查询releas
8、表占用空间
9、将表转储为sql文件
10、结论
通过上面的测试,设置表默认为空或者是not null default '',并没有改变表占用空间的大小与存储的文件的大小与查询速度。
接下来,接着修改
11、修改表releas字段:varchar(25) not null default ''->char(25) not null default ''
12、优化表,并查看表占用空间
13、模糊查询
14、导出sql文件
于2016年5月18号下午4点在公司测试
---------------------------------------------------------------------------------------------
今天是2016年5月21号上午11点,周六在家里面,此时想再次走一下上面的流程,此次不同的是,我将计算的大小精确到6位并四舍五入(round)而不是截取(truncate)。
测试环境:
测试结果:
表占用的空间还是没有随着char、varchar的改变而改变。
测试总体速度要远慢与公司测试的速度(我想有两个原因,一个电脑、一个是mysql版本)。
varchar(25) default null:0.13sec
varchar(25) not null default '':0.08sec
char(25) not null default '':0.09sec
测试步骤如下。
1、将公司的sql文件导入我的笔记本电脑,查看表信息(数据量、表结构、占用空间),确保和公司里面一样。
2、查询速度
3、修改表releas字段:varchar(25) default null->varchar(25) not null default ''
4、查看占用空间并查询速度
5、修改表releas字段:varchar(25) not null default ''->char(25) not null default ''
6、查看占用空间并查询速度