如何增加执行时间以从mysql数据库中获取多条记录

时间:2013-11-13 07:35:35

标签: php mysql

虽然我使用php代码从mysql表中获取了近10,000条记录的所有记录,但它执行缓慢。

任何人都可以告诉我如何以最短的执行时间获取记录

4 个答案:

答案 0 :(得分:3)

对于特定脚本

1

set_time_limit(number in seconds);
整个php(适用于所有脚本)的php.ini中的

2

ini_set('max_execution_time', 300); //300 seconds = 5 minutes

3其中php.ini无法访问(如共享服务器上)将其写入.htaccess文件

<IfModule mod_php5.c>

php_value max_execution_time 259200

答案 1 :(得分:1)

首先,你要做的就是ANALYZE你查询,看看这种低速的原因是什么。

1)如果您的选择不使用INDEX - 您肯定应该创建索引(如果它不存在)或强制您的查询手动使用该索引(FORCE INDEX(primary)等。)。

2)如果您在解释输出中查询创建的临时表(Using temporary) - 您需要为MySQL服务器增加分配的内存,以便它可以在内存中创建临时表而不将其写入HDD(这需要花时间)。对于此优化,请在mysql config中检查tmp_table_sizemax_heap_table_size

3)只有在你没有我上面描述的问题并且你的脚本中只有一些复杂的逻辑来处理你的数据时,你可以直接从你的PHP代码set_time_limit(0)(意味着无限制),或编辑php.ini并将max_executeion_time设置为更高的值。或者,作为替代方案,您可以安装opcache或其他操作码cacthing系统,这可以稍微提高代码的速度(通常为2-10倍)。

(问题可能不仅在您的服务器中,而且在您的连接速度和应下载的数据量 - 可能,选择速度快,但数据加载时间很长,因此请使用Firebug检查响应的大小,与你的带宽比较)

答案 2 :(得分:0)

我们需要查看数据库结构和您的查询以提供更好的答案。

但是,下面只会为您的脚本提供更多时间来运行查询。

你可以用两种方式做到这一点。

  1. 在php文件的开头添加代码set_time_limit(number in seconds);
  2. 您可以将php.ini文件max_execution_time = 3000编辑为更高的值。
  3. 选项1将仅增加该脚本的执行时间。 选项2将增加所有脚本的执行时间。

答案 3 :(得分:0)

尝试添加索引。 但是如果你想要所有的记录,那么这个记录需要时间才是正常的。

尝试增加允许的内存。

<?php ini_set('memory_limit','512M'); ?>

对于执行时间,请查看:

Increase max execution time for php