Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Zliczanie wariacyjne
d0m1n1k_
post 20.01.2016, 08:52:04
Post #1





Grupa: Zarejestrowani
Postów: 208
Pomógł: 3
Dołączył: 13.07.2009
Skąd: Tarnów

Ostrzeżenie: (0%)
-----


Witam,
napisałem skrypt który ma za zadanie zliczenie ile jest przypisanych wpisów do pojazdów których nazwa docelowa lub nazwa tymczasowa jest zgodna ze wzorcem z tabeli stats_id.
Wszystko działa zgodnie z założeniami, ale niestety działa bardzo wolno.
Dla minimalizacji obciążenia serwera (poleasingowy sprzęt sprzed dekady zmonotwany na poddaszu) stosuję zapis do pliku i pętlę która uruchamiana jest raz dziennie.
Ale nie zmienia to wszystko faktu, że zapytanie - a raczej pętla - wykonuje swoją pracę przez wiele minut. Wynika to z wielkości bazy danych - sumarycznie blisko 15 milionów wpisów we wszystkich tabelach.

Poniżej skrypt o którym mowa:

  1. @include_once("inc_db.php");
  2. $query_si = mysql_query("SELECT `si_id`, `si_showid` FROM `stats_id` ORDER BY `si_id`");
  3. while($qsi = mysql_fetch_array($query_si)){
  4. $ilosc = mysql_fetch_array(mysql_query("SELECT COUNT(*) AS wynik_aut FROM `vehicles` WHERE `vh_name` LIKE '%" . $qsi['si_showid'] . "%' OR `vh_temp` LIKE '%" . $qsi['si_showid'] . "%'"));
  5. $si_id = $qsi['si_id'];
  6.  
  7. $mnozniki = mysql_fetch_array(mysql_query("SELECT (SELECT COUNT(*) FROM `stats_price` WHERE `sp_si` = '" . $si_id . "') AS cnt_price, (SELECT COUNT(*) FROM `vh_bodytype` WHERE `vb_si` = '" . $si_id . "') AS cnt_bodytp, (SELECT COUNT(*) FROM `vh_engines` WHERE ve_si = '" . $si_id . "') AS cnt_engine, COUNT(*) AS cnt_milage FROM `stats_milage` WHERE `sc_si` = '" . $si_id . "'"));
  8.  
  9. $elemental = $ilosc['wynik_aut'] * ($mnozniki['cnt_price'] + $mnozniki['cnt_bodytp'] + $mnozniki['cnt_engine'] + $mnozniki['cnt_milage']);
  10. //echo "Wynik dla #" . $si_id . " :";
  11. //echo " " . $mnozniki['cnt_price'] . ",";
  12. //echo " " . $mnozniki['cnt_bodytp'] . ",";
  13. //echo " " . $mnozniki['cnt_engine'] . ",";
  14. //echo " " . $mnozniki['cnt_milage'] . ". ";
  15. //echo "Koncowo: " . $elemental . "<br />";
  16. $eco[] = $elemental;
  17.  
  18. }
  19.  


Z góry dziękuję za każdą pomoc.


--------------------
Prywatna koncepcja pasji - SprawdzAuto.info
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 14:24