我在使用Apache Derby DB进行性能测试时发现了一些奇怪的现象:Derby:表中的行越多,查询的速度越快?
我为性能测试做了五次测试运行。在每次运行之前,我在表格中插入一些数据,以便我进行第一次运行,例如表中有500k元组,第二次运行1000k,第五次运行2500k元组。
查询的执行时间是这样的:为200ms,450ms,700毫秒,500毫秒,550ms
也就是说,第四跑比第三运行速度更快,虽然越来越多的数据需要被扫描和获取在第四轮中。这很奇怪。
我能想象的唯一原因是Derby不时地优化一些内部结构或物理布局,或者一旦表中的数据超过特定阈值,无论如何,可以手动触发这种优化来获得单调而不减少的执行时间测量?
或者您是否知道此行为的确切原因?
在此先感谢!