大型MySQL查询的超时问题

3

我有这段代码:

$theQuery = mysql_query("SELECT phrase, date from wordList WHERE group='nouns'");
while($getWords=mysql_fetch_array($theQuery)) {
 echo "$getWords[phrase] created on $getWords[date]<br>";
}

查询结果有75,000条,每次运行代码都会出错。


2
你能否发布一下你收到的确切错误信息? - murze
3个回答

3

这里可能涉及到几个问题,都是由于php.ini中的设置引起的。您的脚本可能会超时,因为PHP默认将脚本执行时间最大限制设置为30秒。另一个原因(同样可能)是您达到了脚本内存限制,该限制默认为每个脚本执行8MB。

打开php.ini文件,搜索“资源限制”并进行适当修改。


0

我不确定你能安全地假设添加索引会对选择产生影响。他说他得到了75K行,但没有说表中有多少行。如果只有76K行,我怀疑他不会看到任何改进。如果有300K行,也许会有所改善... - MJB
MJB:我相信无论如何他都会看到改进,因为这是一个“组”语句,如果我没记错的话,拥有那个索引将改善组逻辑。但你说得对,如果表更大,改进会更大。 - Seaux

0

php.ini是一个不错的第一步,但你可能会发现自己在一个无法更改这些设置以使其正常工作的服务器上。在这种情况下,将你要做的事情分成块可能是有意义的。

例如,如果这是为了输出,你可以使用LIMIT每次运行25000个结果。将输出放入文件中,然后只使用该文件进行输出。如果需要输出保持新鲜,可以使用cron作业每晚/每小时/每天更新文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接