我有一个显示赛马数据的页面。拥有超过 GB 的数据库。
根据显示的数据量,页面最多可能需要 1 分钟才能完全显示。
如果我删除有大量计算和 mysql 查询的一行会更快,但这会影响我的最终用户。
您有什么建议可以更快地加载页面?
我最后的想法是不用繁重的计算就显示页面,然后进行AJAX调用(用户点击一个按钮)来计算数据并显示出来。
还有其他想法吗?
这是 - 我认为 - 导致缓慢的代码:
function stallWin($stall,$course,$distance,$runners){
include ("dbstring.php");
$threeless = $runners - 3;
$threemore = $runners + 3;
$hsql = "select course, runners, distance, date from ".$table."horse where course = '".$course."' and runners >= '".$threeless."' and runners <= '".$threemore."' and distance = '".$distance."' and xposition = '1' and draw > 0 and draw <='$runners'";
$hresult = mysql_query($hsql,$db);
$htotalraces = mysql_num_rows($hresult);
$hsql = "select draw, sum(IF(xposition=1,1,0)) as wins from ".$table."horse where course = '".$course."' and runners >= '".$threeless."' and runners <= '".$threemore."' and distance = '".$distance."' and draw = '$stall'";
$hbox = '';
$hresult = mysql_query($hsql,$db);
$totalrut = 0;
while ($hmyrow = mysql_fetch_array($hresult)){
$hpercent = number_format( (($hmyrow['wins'] / $htotalraces ) * 100),0);
$hbox.='<tr><td style="text-align:center;" class="likbox">'.$hmyrow['draw'].'</td><td style="text-align:center;" class="likbox">'.$hmyrow['wins'].'</td><td style="text-align:center;" class="likbox">'.$hpercent.'</tr>';
$totalrut = $totalrut + $hmyrow['wins'];
}
return $hpercent;
}
在每场比赛中,每匹马都会调用此函数。如果页面显示 10 场比赛,每场比赛 10 匹马,我会调用 100 次。
我无法在此处添加图像,因为我没有足够的声誉。
解释截图(1):http ://screencast.com/t/6RlOLtnQKs 解释截图(2):与前面相同的网址,最后:/qCvBt8Hst(没有足够的声誉发布超过2个链接)
我也尝试过使用 PHP 分析器,但我在 SQL 日志方面遇到了问题。在该示例中,该页面需要 16 秒才能显示,这还不错。但这可能需要一分钟...