我有一個簡單的問題或問題,我無法得到我的生活。我在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