Php 有没有一种方法可以加速产生大量数据的mysqli查询?

Php 有没有一种方法可以加速产生大量数据的mysqli查询?,php,mysqli,Php,Mysqli,我的PHP代码中有一个查询,返回大约25000行,其中6列数据来自4个不同的表。不过,这造成了一个主要的瓶颈。在以下代码中,store_result()执行大约需要20秒: $stmt = $mysqli->prepare($query); $stmt->execute(); $stmt->store_result(); $stmt->bind_result($var0, $var1, $var2, $var3, $var4, $var5); while($stmt-&g

我的PHP代码中有一个查询,返回大约25000行,其中6列数据来自4个不同的表。不过,这造成了一个主要的瓶颈。在以下代码中,store_result()执行大约需要20秒:

$stmt = $mysqli->prepare($query);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($var0, $var1, $var2, $var3, $var4, $var5);
while($stmt->fetch()) {
    $rows[] = array(
        'field0' => $var0,
        'field1' => $var1,
        'field2' => $var2,
        'field3' => $var3,
        'field4' => $var4,
        'field5' => $var5,
    );
}
我也尝试过同样的查询,但没有准备它:

$stmt = $mysqli->query($query);
$rows = array();
while($row = $stmt->fetch_assoc()) {
    $rows[] = $row;
}
但我没有看到任何改善;存储结果()需要20秒,而查询()需要20秒

由于速度的减慢来自于store_result()而不是execute(),因此优化查询本身会有帮助吗?如果没有,有人有其他建议吗?或者我只是想传输大量数据,却没有任何帮助


请注意,我没有访问mysqlnd的权限,我只需运行一次查询,它没有任何需要转义的用户输入,如果这与任何建议的解决方案相关。

我的第一个猜测是缺少适当的索引。你试过回答你的问题吗

您需要提供更多的上下文以获得更好的答案:

  • 问题是什么
  • 这4张表的结构是什么
  • 一个选定行的大致大小是多少(几个字节相对于 兆字节的blob/文本)
  • mysql数据库是否与php脚本位于同一服务器上
  • 如果db服务器和php服务器位于两台不同的机器上, 它们之间的带宽是多少

    • 查询优化是关键。第一步是确保查询在有效利用密钥的意义上是稳定的。正确使用索引也可以加快查询速度。

      同一查询在mysql命令行上转储结果,或者直接转储到CSV文件等,需要多长时间?换句话说:服务器本身需要多长时间,将PHP从等式中剔除?