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
markonix
post
Post #2





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

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


Indeksy były już nałożone - zapomniałem o tym wspomnieć.

lukaskolista pomysł jest w porządku tylko wykresów jest sporo.
Aktualizacja wymagana jest nie na bieżąco ale tak np. co 15 minut.
Puszczając to cronem to ok, nie ma to wpływu na usera ale szkoda mi troszkę serwera.
Jeżeli danych będzie więcej to może to niekorzystnie wpłynąć na całą stronę dlatego chciałbym to zoptymalizować u źródła.

To tylko dwie kolumny INT i myślałem, że nie będzie tak źle.

Ostatecznie zmienię od drugiej strony - utworzę 3cią kolumną "date" (RRRR-MM-DD) i przerzucę odpowiedzialność na funkcje dodającą wiersze.

Ten post edytował markonix 24.11.2011, 16:02:57
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: 28.12.2025 - 11:21