0

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

谁能告诉我如何以最短的执行时间获取记录

4

4 回答 4

3

1 用于特定脚本

set_time_limit(number in seconds);

2 在整个 php 中的 php.ini(对于所有脚本)

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

3 php.ini 不可访问(如在共享服务器上)将其写入 .htaccess 文件

<IfModule mod_php5.c>

php_value max_execution_time 259200

于 2013-11-13T07:48:22.220 回答
1

您应该做的第一件事是ANALYZE查询并查看如此低的速度的原因是什么。

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

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

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

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

于 2013-11-13T08:01:57.173 回答
0

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

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

您可以通过两种方式做到这一点。

  1. 在您的 php 文件的开头添加代码set_time_limit(number in seconds);
  2. 您可以将 php.ini 文件编辑max_execution_time = 3000 为更高的值。

选项 1 将仅增加该脚本的执行时间。选项 2 将增加所有脚本的执行时间。

于 2013-11-13T07:38:06.650 回答
0

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

尝试增加允许的内存。

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

对于执行时间,请查看:

增加 php 的最大执行时间

于 2013-11-13T07:39:00.467 回答