索引重build后,MySQL查询花费很长时间,但后来工作很快…为什么?

我有一个简单的表与3Mlogging和一个简单的唯一索引在一个整数字段。 当select

SELECT * FROM ThisTable ORDER BY ThatField LIMIT 10 

如预期的那样,它工作得非常快。 当我插入或删除一条logging,或重新启动MySQL时,同样的查询需要10-20秒,有时更长。

我猜测它是将索引加载到内存中 – 这很好,但为什么客户端应该等待呢? 这可以解决,以便查询总是快速返回?

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

一旦引擎重新启动,您将能够将此查询caching到caching中的最简单方法是在引擎重新启动后立即运行该select。

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