簡體   English   中英

如何優化mysql查詢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM