Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Optymalizacja skryptu dzialajacego na bazie
Forum PHP.pl > Forum > Przedszkole
kixner
Mam napisany skrypt zliczajacy ilosc uzytkownikow przypisanych do danej klasy/szkoly, wykonujacy sie co 30 minut. Chcialbym sie dowiedziec czy mozna go w jakis sposob zooptymalizowac, ewentualnie czy sa jakies bledy.

Plik wykonujacy sie co 30 minut:
  1. <?
  2. include('inc/config.php');
  3. $aktywni = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed"));
  4. $gimnazjalisci = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed WHERE klasa='3'"));
  5. $licealisci = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed WHERE klasa='1' or klasa='2'"));
  6. $g1 = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed WHERE szkola='Gimnazjum nr 1'"));
  7. $g2 = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed WHERE szkola='Gimnazjum nr 2'"));
  8. $g3 = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed WHERE szkola='Gimnazjum nr 3'"));
  9. $zs4 = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed WHERE szkola='ZS nr 4'"));
  10. $g6 = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed WHERE szkola='Gimnazjum nr 6'"));
  11. $g7 = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed WHERE szkola='Gimnazjum nr 7'"));
  12. $zs8 = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed WHERE szkola='ZS nr 8'"));
  13. $lo1 = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed WHERE szkola='I Liceum Ogólnokształcące'"));
  14. $lo2 = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed WHERE szkola='II Liceum Ogólnokształcące'"));
  15. $lo3 = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed WHERE szkola='III Liceum Ogólnokształcące'"));
  16. $zsp1 = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed WHERE szkola='ZSP nr 1'"));
  17. $zsp2 = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed WHERE szkola='ZSP nr 2'"));
  18. $zsp3 = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed WHERE szkola='ZSP nr 3'"));
  19. $zsp6 = mysql_num_rows(mysql_query("SELECT * FROM user_confirmed WHERE szkola='ZSP nr 6'"));
  20. $result = mysql_query("UPDATE statystyki SET aktywni='$aktywni', gimnazjalisci='$gimnazjalisci', licealisci='$licealisci', g1='$g1', g2='$g2', g3='$g3', zs4='$zs4', g6='$g6', g7='$g7', zs8='$zs8', 1lo=$lo1, 2lo='$lo2', 3lo='$lo3', zsp1='$zsp1', zsp2='$zsp2', zsp3='$zsp3', zsp6='$zsp6'");
  21. ?>


W pliku inc/config.php sa tylko zmienne wymagane do polaczenia z baza.
Tabela user_confirmed:
  1. CREATE TABLE IF NOT EXISTS `user_confirmed` (
  2. `user_id` int(6) NOT NULL AUTO_INCREMENT,
  3. `login` varchar(32) NOT NULL DEFAULT '',
  4. `pass` varchar(32) NOT NULL DEFAULT '',
  5. `email` varchar(40) NOT NULL DEFAULT '',
  6. `data` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  7. `dane` varchar(120) NOT NULL DEFAULT '',
  8. `szkola` varchar(120) NOT NULL DEFAULT '',
  9. `klasa` int(1) NOT NULL DEFAULT '0',
  10. `nauczyciel` varchar(120) NOT NULL DEFAULT '',
  11. `ip` varchar(20) NOT NULL DEFAULT '',
  12. PRIMARY KEY (`user_id`)
  13. ) ENGINE=MyISAM DEFAULT CHARSET=latin2;


Z gory dziekuje za pomoc i sugestie.
smietek
Skoro pobierasz tylko ilość wyników to niepotrzebnie w każdym zapytaniu masz pobieranie wszystkich danych (*), zamień to np. na user_id a mniej danych będzie pobierał.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.