2013-02-28 3 views
1

Я использую этот запрос для получения данных из базы данныхКак я могу оптимизировать mysql-запрос?

Как я могу оптимизировать и использовать лучший код для этого соединения?

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 к базе данных и высокой скорости?

+1

whoa dont do this .. я имею в виду, что не использую @ для ignoe erroris не очень хороший вариант –

+2

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **] (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://www.brightmeup.info/article.php?a_id=2). –

+0

, пожалуйста, предложите новый код для замены –

ответ

0

Почему вы не запрашиваете базу данных один раз, чтобы получить всю информацию? Взгляните на это:

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 :).

+0

Вы можете написать полный код для замены моего кода? –

+0

вы используете mysql_fetch_object . В чем причина использования Dont: mysql_fetch_assoc или mysql_fetch_array? –

0

Вы всегда можете использовать кеш и memcache в качестве оптимизационного решения. Вы можете кэшировать свои запросы и для остальных запросов, которые могут появиться, если из кеша

+0

i am begginer что мне делать? –

0

Ну Существует всегда миля идти .. Вы можете сделать оптимизацию несколько способов, с помощью PHP коды, а также с помощью запроса, однако вы не должны использовать вещи, которые собираются вымершим

Warning 

Это расширение устарело от PHP 5.5.0 и будет удалено в будущем. Вместо этого следует использовать расширение MySQLi или PDO_MySQL. См. Также MySQL: выбирая руководство по API и связанные с ним FAQ для получения дополнительной информации. Альтернативы этой функции включают в себя:

mysqli_stmt_num_rows() 
PDOStatement::rowCount() 

Если вы просто хотите посчитать строки, которые должны лучше использовать: -

SELECT COUNT(*) FROM SomeTable

И вы не должны использовать одиночные кавычки, что имеет benefit over double Quotes

и Как упоминалось NullPointer, вы не должны use @ to suppress error message. В настоящее время префикс оператора ошибки «@» даже отключает отчет об ошибках для критических ошибок, которые прекратят выполнение скриптов. Между прочим, это означает, что если вы используете «@» для подавления ошибок от определенной функции, и либо она недоступна, либо была опечатана, скрипт будет умирать прямо там без указания относительно причины.

+0

i need begginer toturial –

+0

http://www.serverwatch.com/tutorials/article.php/2175621 – ScoRpion

+0

И для производительности PHP вы можете прочитать это http://phplens.com/lens/php-book/optimizing-debugging -php.php И этот https://developers.google.com/speed/articles/optimizing-php – ScoRpion