晚上好!
我正在优化我的网站,而且我遇到了一些奇怪的行为。之前,我认为是因为我正在使用的数据进行了计算,但我开始质疑这一点。
我发现运行一些代码如:
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秒。我很好奇这个后端可能在哪里?或者更好的是,我如何更好地设计这个以提高效率。
感谢。
答案 0 :(得分:3)
为什么不重构您的查询以使用IN而不是55个查询?
SELECT id FROM gamedata_concepts WHERE game_id IN (12277, 12278, 12279, ...)
每次看到循环中执行的查询时,通常都是一个不好的信号。
答案 1 :(得分: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");