Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalizacja zapytania, 2 kolumny (PHP czy MySQL)
markonix
post
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Posiadam bardzo prostą bazę w postaci ID (INT) i Data UNIX(INT).

  1.  
  2. $res = mysql_query("SELECT `time` FROM `views` WHERE `aid` = $aid AND `time` > $ago");
  3. while ($row = mysql_fetch_row($res)) {
  4. $arr[date('Y-m-d', $row[0])] += 1;
  5. }


Tabela $arr służy do generowania wykresu.
Niestety wierszy jest sporo (miliony) i skrypt raczej się wywala. Samo zapytanie wg phpmyadmin to kilka setnych sekundy tak więc prawdopodobnie problemy są ze skryptem PHP. Próbowałem przerzucić działanie na bazę:

  1. SELECT COUNT(*), FROM_UNIXTIME(`time`, '%Y-%m-%d') FROM `views` WHERE `aid` = 123 GROUP BY FROM_UNIXTIME(`time`, '%Y-%m-%d')


Ale znów sam skrypt w phpmyadmin wykonuje się ponad 10 sekund. Dodając do tego obróbkę w PHP to znów wywołanie skryptu jest na granicy możliwości.

Jakieś sugestie?

Ten post edytował markonix 24.11.2011, 16:03:29
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lukaskolista
post
Post #2





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


Jezeli index nie pomoze to proponuje utworzyc jakas tabele/plik w ktorej/ym beda dane tylko i wylacznie do wykresow. Te dane powinny byc w postaci "tylko do odczytu", czyli w takim formacie, ktorego nie trzeba bedzie parsowac ani obrabiac w zaden posob. Taka tabela/plik powinna byc na bierzaco aktualizowana przez jakis skrypt w cronie ktoremu za bardzo nie zalezy na czasie.

Takie rozwiazanie sprawdzi sie jedynie w przypadku, w ktorym nie potrzeba sledzic wykresu na bierzaco i dozwolone sa opoznienia.

Ten post edytował lukaskolista 24.11.2011, 10:31:33
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 18:24