MySQL对数字和字符串型数据的读取操作比较

续上次的用十进制保存颜色代码的研究
本次研究主要测试是不是在MySQL中对整型字段的操作要比对字符串型字段的操作快
我单独建立了一个数据库,在里面单独建立了一个表,只有一个字段,就是用来测试的字段。
测试方法:
读取VARCHAR(6)类型字段和MEDIUMINT(8)字段各5000次,重复进行5便,计算耗时
写入”ABCDEF”到VARCHAR(6)字段和写入100000到MEDIUMINT(8)字段各1000次,重复进行5遍,计算耗时
以上操作均使用PHP完成
测试环境:
Windows XP Professonal with SP2
Apache 2.2.3
MySQL 5.0.25
PHP版本 5.2.0

测试开始以后,我在旁边同时聊QQ(因为每次执行都要近半分钟),同时看着任务管理器中Apache和MySQL进程对CPU的占用情况。Apache和MySQL对CPU的占用都是20%~30%,因此查询操作可以说已经是全速进行了,几乎没有受到其他正在进行的操作的影响(比如说我聊QQ……)
每次得出结果我都记录下来,最后对结果进行统计

测试结果:
测试结果主要是计算平均值,计算5次操作的平均值,然后再将5次操作中最大值和最小值去掉,再计算平均值,结果如下(单位:毫秒)

测试项目                5次平均                3次平均
插入MEDIUMINT            23308.648                  22765.856
插入VARCHAR               22820.456                  22825.593
查询MEDIUMINT            22298.686                  22277.976
查询VARCHAR               23261.500                  23253.640

可以看出,两者相差不大,可以说是一样的。由此我们可以得知,MySQL对字符型字段和整型字段的读写速度是相同的(就算有差别也可以忽略不计)

结论:
MySQL对字符型字段和整型字段在查询和写入所耗费的时间上是相同的。

===============================================
附:原始测试数据

——————————————————————————
*21978.138208389ms in insert 1000 record in MEDIUMINT(8)
22330.047130585ms in insert 1000 record in MEDIUMINT(8)
23317.905187607ms in insert 1000 record in MEDIUMINT(8)
*26267.531871796ms in insert 1000 record in MEDIUMINT(8)
22649.605035782ms in insert 1000 record in MEDIUMINT(8)
average in all data: 23308.648
delete biggest and smallest average: 22765.856

23122.699975967ms in insert 1000 record in VARCHAR(6)
*23809.734106064ms in insert 1000 record in VARCHAR(6)
21970.224142075ms in insert 1000 record in VARCHAR(6)
23383.861064911ms in insert 1000 record in VARCHAR(6)
*21815.769195557ms in insert 1000 record in VARCHAR(6)
average in all data: 22820.456
delete biggest and smallest average: 22825.593

22309.039115906ms in select 1000 MEDIUMINT(8) records 5000 times
22427.669048309ms in select 1000 MEDIUMINT(8) records 5000 times
22097.222089767ms in select 1000 MEDIUMINT(8) records 5000 times
*22080.224990845ms in select 1000 MEDIUMINT(8) records 5000 times
*22579.282045364ms in select 1000 MEDIUMINT(8) records 5000 times
average in all data: 22298.686
delete biggest and smallest average: 22277.976

*23562.417984009ms in select 1000 VARCHAR(6) records 5000 times
*22984.163999557ms in select 1000 VARCHAR(6) records 5000 times
23248.642206192ms in select 1000 VARCHAR(6) records 5000 times
23285.526990891ms in select 1000 VARCHAR(6) records 5000 times
23226.745128632ms in select 1000 VARCHAR(6) records 5000 times
average in all data: 23261.500
delete biggest and smallest average: 23253.640

该文章发表于 网页开发。将永久链接保存到书签。

发表评论

电子邮件地址不会被公开。