MYSQL错误,服务器已经消失了?

时间:2011-02-18 15:23:56

标签: php mysql

我正在使用下面的查询,当我每页运行一次此查询时没有问题,但需要在单个页面上调用大约30次以上的值略有不同,有时它运行正常,有时页面运行从不加载,有时我得到“服务器已经消失”错误,http://dev.mysql.com/doc/refman/5.0/en/gone-away.html

这是一个性能问题,我是否需要将此查询分解为更小的问题(甚至会产生任何影响),还是我还能做其他事情?

SELECT normalmtm.id, normalmtm.amt, normalmtm.lockexpire, ptassumptions.id, ptassumptions.zero, ptassumptions.beta, ptdata.id, ptdata.date
FROM normalmtm
INNER JOIN ptdata ON ptdata.date = normalmtm.lockdate
INNER JOIN program ON program.clientcode = '1' AND program.clientprogram = normalmtm.program AND program.normalprogram = 'program'
INNER JOIN ptassumptions ON ptassumptions.clientcode = '1' AND ptassumptions.program = program.normalprogram
INNER JOIN purpose ON purpose.clientcode = '1' AND purpose.clientpurpose = normalmtm.purpose AND purpose.normalpurpose = ptassumptions.purpose
INNER JOIN status ON status.clientcode = '1' AND status.clientstatus = normalmtm.stage AND status.normalstatus = ptassumptions.status
WHERE normalmtm.clientcode = '1'
GROUP BY normalmtm.id

normalmtm表有几千行,其他表是较小的规范化表,大约有100行

修改

它是在本地Windows机器上运行的WAMP服务器,Apache版本:2.2.11,PHP版本:5.3.0,MySQL版本:5.1.36

2 个答案:

答案 0 :(得分:2)

你有适当的索引吗?如果你只获得了你提到的记录数,那么这个查询应该在jiffy中运行。

答案 1 :(得分:0)

看起来你已经找到了答案。

创建连接和向DBMS发出查询需要多长时间?启动查询和获取错误消息需要多长时间? wait_timeout的值是什么?

  

normalmtm表有几千行,其他表是较小的规范化表,大约有100行

因此,假设数据库已规范化(基于时间的连接!!!! ?????)并且查询正确写入,查询应处理0到1000 x 100 x 100 x 100 x 100 x 100之间的内容行(后者是一个相当大的数字)。

听起来你需要查看索引。