[英]how can i optimize mysql query?
我使用此查詢從數據庫中獲取數據
如何為該連接優化和使用最佳代碼?
connect();
$games_sql = mysql_query("SELECT gameid,mizbanid,mihmanid,score1,score2,gamedavar,gamestadium,now FROM games WHERE gameweek='$site_week' ORDER BY now ASC LIMIT 9");
for( $i = 0; $i < mysql_num_rows( $games_sql ); $i++ ) {
$gameid = @mysql_result( $games_sql, $i, 0);
$mizbanid = @mysql_result( $games_sql, $i, 1 );
$mihmanid = @mysql_result( $games_sql, $i, 2);
$score1 = @mysql_result( $games_sql, $i, 3);
$score2 = @mysql_result( $games_sql, $i, 4);
$gamedavar = @mysql_result( $games_sql, $i, 5);
$gamestadium = @mysql_result( $games_sql, $i, 6);
$now = @mysql_result( $games_sql, $i, 7);
$gametimeanddate = jdate("l d M y ساعت G:i", $now);
$gamedate = jdate("l d M y", $now);
$gametime = jdate("G:i", $now);
`connect()` function include `mysql_connect` & `mysql_select_db`
我如何優化此代碼,以降低與數據庫的user_connection
並提高速度?
您始終可以將緩存和內存緩存用作優化解決方案。 您可以緩存查詢,對於其余請求,可以從緩存中彈出
為什么不一次查詢數據庫以捕獲所有信息? 看看這個:
connect();
$sql = 'SELECT
gameid,
mizbanid,
mihmanid,
score1,
score2,
gamedavar,
gamestadium,
now
FROM games
WHERE gameweek = ' . $site_week . '
ORDER BY now ASC
LIMIT 9';
$query = mysql_query($sql);
if(mysql_num_rows($query)) {
while($Result = mysql_fetch_object($query)) { //loop trough results
print_r($Result); //prints the results.
echo $Result->gameid; //this is how you echo the data
}
}
請注意,不建議使用mysql_query函數,需要將其替換為mysqli :)。
好吧,總有一段路要走。.您可以使用php代碼以及Query以多種方式進行優化,但是您不應該使用即將滅絕的東西
Warning
自PHP 5.5.0起不推薦使用此擴展,以后將刪除。 相反,應使用MySQLi或PDO_MySQL擴展。 另請參見MySQL:選擇API指南和相關的FAQ,以獲取更多信息。 此功能的替代方法包括:
mysqli_stmt_num_rows()
PDOStatement::rowCount()
如果您只想計算行數,則最好使用:
SELECT COUNT(*) FROM SomeTable
而且,您不應該使用單引號比雙引號有好處
並且如NullPointer所述,您不應使用@來抑制錯誤消息 。 當前,“ @”錯誤控制運算符前綴甚至將針對嚴重錯誤禁用錯誤報告,這些錯誤將終止腳本執行。 除其他外,這意味着如果您使用“ @”抑制某個功能的錯誤,並且該功能不可用或輸入錯誤,該腳本將在那里死掉,而沒有任何指示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.