我有一个简单的问题或问题,我无法得到我的生活。我在PHP中有一个MYSQL查询,但它永远需要加载看起来正在访问的数据库持有许多行1千多个。使用下面的当前脚本,它将在大约25秒内加载,并且有6,000行。MYSQL PHP查询时间过长
$SQLGetUsers = $odb -> query("SELECT m.id,m.userid,m.btc,m.unpaidbtc,m.addedbtc,m.ltc,m.unpaidltc,m.addedltc,m.totalbtcmined,m.totalltcmined,u.totalbtcreward,u.totalltcreward, SUM(r.totalbtcdeposited) AS value_sum1, SUM(r.totalltcdeposited) AS value_sum2
FROM miner m
LEFT JOIN users u ON m.userid = u.ID
LEFT JOIN referrals r ON m.userid = r.refid ");
while ($getInfo = $SQLGetUsers -> fetch(PDO::FETCH_ASSOC))
{
$ID = $getInfo['id'];
$userid = $getInfo['userid'];
$totalbtc = $getInfo['btc'];
$totalunpaidbtc = $getInfo['unpaidbtc'];
$addedbtc = $getInfo['addedbtc'];
$totalltc = $getInfo['ltc'];
$totalunpaidltc = $getInfo['unpaidltc'];
$addedltc = $getInfo['addedltc'];
$totalbtcmined = $getInfo['totalbtcmined'];
$totalltcmined = $getInfo['totalltcmined'];
///////////////////////////////////////////////
$newBTCbalance = ($totalbtc);
$btctoadd = number_format($newBTCbalance/45/24/60/60 * 3, 10);
$newbtcvalue = $totalunpaidbtc + $btctoadd;
$odb->exec("UPDATE miner SET addedbtc = '$btctoadd', unpaidbtc = '$newbtcvalue' WHERE `id` = '$ID'");
$newLTCbalance = ($totalltc);
$ltctoadd = number_format($newLTCbalance/45/24/60/60 * 3, 10);
$newltcvalue = $totalunpaidltc + $ltctoadd;
$odb->exec("UPDATE miner SET addedltc = '$ltctoadd', unpaidltc = '$newltcvalue' WHERE `id` = '$ID'");
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$minedbtc = $btctoadd + $totalbtcmined;
$minedltc = $ltctoadd + $totalltcmined;
$odb->exec("UPDATE miner SET totalbtcmined = '$minedbtc', totalltcmined = '$minedltc' WHERE `id` = '$ID'");
}
我不知道我能做些什么来加快查询速度,因此它运行时间少于1秒,甚至有可能吗?那么反正任何人都可以帮助这个运行更快?
几件事情在这里。首先,你要更新同一个矿工3次。为什么不一次只做1次更新?其次,在MySQL中,用查询前面的'EXPLAIN'运行查询。即:'解析SELECT m.id,...'并将其添加到你的问题中,因为可能有些东西你可以在那里改进(索引方式) – Tom
只是要抛出这个问题,你应该使用预处理语句来避免SQL注射。特别是考虑到你在做一些与货币有关的事情,所以你是一个更大的目标。 –
你应该帮助我们来帮助你。删除我们不需要的所有代码。然后请做一些调试:查询是否慢(在客户端运行)?如果是这样,我们只需要看看sql。添加说明和数据库方案。查询是否正常,但网站建设速度慢?等等。不要随意把所有的代码放在这里,而只是一个小例子(例如,试着去除所有的增加,如果它并不重要,那么我们并不需要看到这些,我们呢?) – Nanne