将输出保存到一个文件,然后用find命令来得到各次运行的时间:


























下面是各组查询测试结果,取实际运行时间。
▲表1 TPC-H scale=10各种压缩和索引数据的测试对比,单位:秒
注意:带*号的项目使用修改后的等价查询。独立表空间不压缩(不加外键),第13个查询没法在合理的时间完成,后续的查询也没有再继续执行。
从表1可知,如果没有外键约束,MySQL的前12个查询仍能在合理的时间内运行完成,其中第10、11个查询的时间比添加了外键以后还短,这说明查询优化器对这些查询的优化能力不错,而加上外键约束后,在表不压缩的情况下,大约35分钟就能将22个查询执行完毕,但有些查询的时间变长了,这说明,MySQL采用基于规则的优化,虽然访问表比访问索引更好,还是采用了访问索引的执行计划。
MySQL压缩基本上发挥不了提高查询速度的作用,除了个别查询(如查询2)比非压缩表速度快外,其他时间短的查询和未压缩表相当,而时间长的有未压缩表的几倍到几百倍。按理说减少了I/O物理读对整体查询应该有帮助的,但事实并非如此,可能跟MySQL的压缩算法压缩比不高,但解压开销较大有关。可以这么说,MySQL的压缩功能基本不适合于查询。