나는 프로세스 창녀라고 알고있는 두 영역을 가지고 있지만 더 나은 방법을 모른다. 문제이러한 쿼리는 어떻게 최적화 할 수 있습니까?
2 개 개의 장소는 여기
표시되고 해당 쿼리
지역 1
$nresult = mysql_query("SELECT time
FROM log
ORDER BY time
LIMIT 1") or die(mysql_error);
$nr = mysql_fetch_assoc($nresult);
$aresult = mysql_query("SELECT *
FROM log") or die(mysql_error);
$an = mysql_num_rows($aresult);
$aresult = mysql_query("SELECT AVG(players)
FROM log") or die(mysql_error);
$ap = mysql_fetch_assoc($aresult);
$average = round($an/((time()-$nr['time'])/60/60), 2);
echo "<p class=\"tf2\"><span>{$an}</span> items since " . date("F j, Y", $nr['time']) . " at " . date("g:i a", $nr['time']) . ".<br /><span>" . $average . "</span> items received per hour (<span>" . round($average/$ap['AVG(players)'], 2) . "</span>/player/hour).<br />Showing <span>{$_SESSION['limit']}</span> items per page.</p>";
지역 2
당신이 볼 수 있듯이 는if (!empty($_GET['s']) && !empty($_GET['t']) && !empty($_GET['m'])&& !empty($_GET['q'])) {
if ($_GET['m'] != 'all') {
$m = "AND method = {$_GET['m']}";
}
else {
$m = '';
}
if ($_GET['q'] != 'all') {
$q = "AND quality_id = {$_GET['q']}";
}
else {
$q = '';
}
if ($_GET['s'] == ' ') {
$s = '1=1';
}
else {
$s = "{$_GET['t']} LIKE '%" . mysql_real_escape_string($_GET['s']) . "%'";
}
$num_result = mysql_query("SELECT *
FROM log
LEFT JOIN item_definition
on log.item = item_definition.item_definition_desc
LEFT JOIN method
on log.method = method.method_id
LEFT JOIN item
on item_definition.item_definition_id = item.item_id
LEFT JOIN server
on log.server = server.ip
LEFT JOIN quality
on log.quality = quality.quality_id
WHERE {$s}
{$m}
{$q}")
or die(mysql_error());
}
else {
$num_result = mysql_query("SELECT *
FROM log") or die (mysql_error());
}
$total = mysql_num_rows($num_result);
echo "<center>" . $total . " results</center><br />";
라이브 페이지는 그것이로드를위한 시간의 좋은 금액을 소요, 여기 http://www.tf2items.711clan.net/
입니다.
팁을 주시면 감사하겠습니다.
안녕하세요 [바비 테이블] (http://xkcd.com/327/). 코드가 안전하지 않습니다! 귀하의 응용 프로그램은 SQL 주입에 취약합니다. mysql_real_escape_string()을 사용하여 SQL 쿼리에 사용 된 모든 매개 변수를 이스케이프 처리합니다. 이'$ m = "AND method = {$ _GET [ 'm']} ;;에 의해 미끄러지지 않게하십시오. – Shef
처음에는 테이블의 ('log','item_definition', ...) 정의를 추가하십시오 : 필드, 타입, 제약, (프라이 머리 키, 외래 키), 인덱스, 엔진. –