1

大家晚上好!

我正在优化我的网站,我遇到了一些奇怪的行为。之前,我认为这是因为对我使用的数据进行了计算,但我开始质疑这一点。

我发现运行一些代码,例如:

for ($i=0; $i < 55 ; $i++) { 
  $query = "SELECT id FROM gamedata_concepts WHERE game_id=12277";

  if ($result = $mysqli->query($query){
  }
}

大约需要 3 秒,但是,如果我在 phpMyAdmin 中调用该查询一次,它说它需要 '.0121' 秒,乘以 55(上面循环中使用的测试数字),它应该使用 appx。.6655 秒。我很好奇这个后端在哪里?或者更好的是,我如何才能更好地设计它以提高效率。

谢谢。

4

2 回答 2

3

为什么不重构您的查询以使用 IN 而不是 55 个查询?

SELECT id FROM gamedata_concepts WHERE game_id IN (12277, 12278, 12279, ...)

每当您看到在循环中执行查询时,这通常是一个不好的迹象。

于 2012-07-02T22:42:14.393 回答
1

您可以使用事务以更快的速度执行此操作

$mysqli->query("START TRANSACTION");
for ($i=0; $i < 55 ; $i++) { 
  $query = "SELECT id FROM gamedata_concepts WHERE game_id=12277";

  if ($result = $mysqli->query($query){
  }
}
$mysqli->query("COMMIT");
于 2015-06-20T21:42:37.450 回答