索引重建后,MySQL 查询需要很长时间,但随后运行速度很快...为什么?

索引重建后,MySQL 查询需要很长时间,但随后运行速度很快...为什么?

我有一张包含 3M 条记录的简单表,以及一个整数字段上的简单唯一索引。选择时

SELECT * FROM ThisTable ORDER BY ThatField LIMIT 10

正如预期的那样,它运行得非常快。但是当我插入或删除一条记录,或者重新启动 MySQL 时,同样的查询需要 10-20 秒,有时甚至更长。

我猜它正在将索引加载到内存中 - 这很好,但是客户端为什么要等待? 可以修复这个问题以便查询总是快速返回吗?

非常感谢你的帮助,安德鲁

答案1

引擎重新启动后立即将此查询放入缓存的最简单方法是在引擎重新启动后立即运行选择。

重新启动 MySQL 进程,然后立即登录 MySQL 服务器并执行的脚本文件SELECT * FROM ThisTable ORDER BY ThatField LIMIT 10将确保立即缓存查询,这意味着下一个查询应该被很好地缓存。

相关内容