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%)
-----


  1. SELECT COUNT(*) AS `sum` , `date`
  2. FROM `views`
  3. WHERE `aid` = 25
  4. GROUP BY `date`
  5. ORDER BY `date` DESC
  6. LIMIT 0 , 14


~ Minimum 5 sekund. W każdym dniu do policzenia jest około 100 - 200 tysięcy wyświetleń.
Troszkę mało rozwojowe te zapytanie (liczba wzrośnie i będzie znowu kiszka) ale na razie do zaakceptowania.

Co ciekawe indeks nałożony na date pogarsza sytuację o 3 sekundy.

Edit.. Usunięcie indeksu z `aid` skróciło do ~ 1 sekundy.
Chyba czas przegruntować wiedzę o indeksach..

Ten post edytował markonix 25.11.2011, 00:52:12
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: 17.10.2025 - 17:25