我的PHP代码中有一个查询,它返回大约25,000行,其中有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;
}
但我没有看到任何改善;而不是store_result()花了20秒,query()花了20秒而不是。
因为减速来自store_result()而不是execute(),所以优化查询本身会有帮助吗?如果没有,有没有人有任何其他建议?或者我只是想传输大量数据并且没有任何帮助吗?
请注意,我无法访问mysqlnd,我只需运行一次查询,并且没有任何需要转义的用户输入,如果这与任何建议的解决方案相关。
答案 0 :(得分:1)
我的第一个猜测是缺乏适当的索引。您是否尝试过EXPLAIN您的查询?
您需要提供更多背景信息才能获得更好的答案:
答案 1 :(得分:0)
查询优化是关键。第一步是确保您的查询在您有效利用密钥的意义上是稳定的。正确使用索引也可以加快查询速度。