大型MySQL查询超时

时间:2010-05-11 21:41:52

标签: php mysql while-loop

我有这段代码:

$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个结果,每次运行代码时都会出错。

3 个答案:

答案 0 :(得分:3)

这里可能会出现几个问题,所有问题都归功于php.ini中的设置。您的脚本可能会超时,因为PHP默认为脚本执行最多30秒。另一个原因(也是可能的)是您正在达到脚本内存限制,每个脚本执行默认为8MB。

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

答案 1 :(得分:0)

作为猜测,我会说你的MySQL查询超时而不是回显结果(来自你的标题)

您是否尝试在MySQL表的组列上设置索引?这会减慢你的插入应该在选择上产生巨大的差异。

请参阅http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

答案 2 :(得分:0)

php.ini是一个很好的第一步,但你可能会发现自己在服务器上,你无法将这些设置更改为可行的设置。在这种情况下,分解你正在做的事情可能是有意义的。

例如,如果这是输出,您可以使用LIMIT一次运行25,000个结果。将输出粘贴在文件中,然后只使用该文件作为输出。如果您需要输出保持新鲜,您可以每晚/每小时更新您的文件/ cron作业。