最近公司项目做压测(查询请求),100个并发,发现查询条件发布时间(publishtime)不同,测试结果不一样:
AND t.publishtime >= '2021-12-05 00:00:00'
AND t.publishtime <= '2021-12-19 23:59:59'
100个并发平均耗时要20多秒,但是:
AND t.publishtime >= '2021-11-05 00:00:00'
AND t.publishtime <= '2021-12-19 23:59:59'
100个并发平均耗时只需要3~5秒。
时间范围大,查询效率反而高。通过一顿摸索,最后在publishtime列上重建索引,上面两个时间范围,100个并发平均耗时都不到3秒。
百思不得其解,最后在百度搜索“重建索引 提升查询效率”,了解到了索引碎片这个概念: