Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
GmAMXBans

Optymalizacja zapytania SQLsZbyt długie wykonywanie zapytania

gmamxbans

  • Zamknięty Temat jest zamknięty
1 odpowiedź w tym temacie

#1 Bailiff

    Nowy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:1
  • Lokalizacja:Polska
Offline

Napisano 24.01.2013 16:31

Witam mam problem z zapytaniem w pliku ban_list.php

SELECT ba.*, se.gametype,se.timezone_fixx, aa.nickname FROM `".$config->db_prefix."_bans` AS ba
								LEFT JOIN `".$config->db_prefix."_serverinfo` AS se ON ba.server_ip=se.address
								LEFT JOIN `".$config->db_prefix."_amxadmins` AS aa ON (aa.steamid=ba.admin_nick OR aa.steamid=ba.admin_ip OR aa.steamid=ba.admin_id)
								WHERE ba.expired=0 GROUP BY ba.bid ORDER BY ban_created DESC LIMIT ".$min.",".$config->bans_per_page

przy dość sporej ilości banów wykonuje się ono ok. 20 sekund co jest czasem koszmarnie długim i strasznie obciąża serwer.

Jest sposób, by zoptymalizować to zapytanie ? myślę, że wystarczyło by np. ograniczyć ilość wyników z ba.* (coś w stylu
"SELECT * from `".$config->db_prefix."_bans` WHERE expired=0 GROUP BY bid ORDER BY ban_created DESC LIMIT ".$min.",".$config->bans_per_page""
i dopiero później połączyć to z reszta tylko do końca nie wiem jak)

Problem do zamkniecia. Zamienilem:

$query  = mysql_query("SELECT ba.*, se.gametype,se.timezone_fixx, aa.nickname FROM `".$config->db_prefix."_bans` AS ba
								LEFT JOIN `".$config->db_prefix."_serverinfo` AS se ON ba.server_ip=se.address
								LEFT JOIN `".$config->db_prefix."_amxadmins` AS aa ON (aa.steamid=ba.admin_nick OR aa.steamid=ba.admin_ip OR aa.steamid=ba.admin_id)
								WHERE ba.expired=0 GROUP BY ba.bid ORDER BY ban_created DESC LIMIT ".$min.",".$config->bans_per_page) or die(mysql_error());

na

$query  = mysql_query("SELECT ba.*, se.gametype,se.timezone_fixx, aa.nickname FROM (SELECT * FROM `".$config->db_prefix."_bans` WHERE expired=0 GROUP BY bid ORDER BY ban_created DESC LIMIT ".$min.",".$config->bans_per_page." ) AS ba
								LEFT JOIN `".$config->db_prefix."_serverinfo` AS se ON ba.server_ip=se.address
								LEFT JOIN `".$config->db_prefix."_amxadmins` AS aa ON (aa.steamid=ba.admin_nick OR aa.steamid=ba.admin_ip OR aa.steamid=ba.admin_id)
								") or die(mysql_error());


I strona ładuje się w ułamku sekundy ;)

Użytkownik Bailiff edytował ten post 24.01.2013 16:31

  • +
  • -
  • 0

#2 Kawon

    Godlike

  • Przyjaciel

Reputacja: 887
Czempion

  • Postów:5 165
  • Steam:steam
  • Imię:Paweł
  • Lokalizacja:Dzierzgoń
Offline

Napisano 24.01.2013 22:14

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Temat zamknięty na prośbę użytkownika.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

DarkGL to mój autorytet.






Również z jednym lub większą ilością słów kluczowych: gmamxbans

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych