←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

GmAMXBans
Optymalizacja zapytania SQLs

Zablokowany

  • +
  • -
Bailiff - zdjęcie Bailiff 24.01.2013

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
Odpowiedz

  • +
  • -
Kawon - zdjęcie Kawon 24.01.2013

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
Odpowiedz
Zablokowany