我有一个快速(<0.1秒)的mysql SELECT查询,但只是我第一次运行它。它将3个表连接在一起(使用索引)并且具有相对简单的WHERE语句。当我在phpmyadmin中手动运行它(总是在WHERE中更改数字以便它不被缓存)时它总是很快但是当我有php连续运行它的几个副本时,第一个是快速的和其他的挂了~400秒。我唯一的猜测是,某种方式mysql的连接内存不足,然后必须进行昂贵的分页。
我的一般问题是如何修复此行为,但我的具体问题是没有实际关闭并重新启动连接如何使来自php的这些查询被视为独立,就像来自phpmyadmin的查询一样,我该怎么办?告诉mysql在请求完成时刷新任何内存,这听起来像是一个内存问题吗?
答案 0 :(得分:0)
我至少在我的案例中找到了答案,而且我将它放在这里,以便将来遇到类似问题的人。我运行的查询返回了很多结果,MYSQL's query cache导致了很多开销。当您运行查询时,MYSQL将保存它及其输出,以便它可以快速快速回答未来相同的请求。我所要做的只是放入SQL_NO_CACHE并且速度恢复正常。只需看看你的传入查询是否很大或结果是否非常大,因为MYSQL可能需要相当多的资源才能决定何时开始。