Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczanie ilości takich samych wartości z jedej kolumny
Forum PHP.pl > Forum > Bazy danych > MySQL
son
Witam,
Załużmy, że mam bazę o nazwie skrzynkaOdbiorcza, która zawiera kilka tysięcy rekordów (wiadomości). Chciałbym teraz utworzyć tablicę, w której nadawcy będzie odpowiadała liczba nadanych wiadomości. Zależy mi na optymalnym zestawie zapytań. Metoda łopalologiczna, którą ja testowałem, w przypadku wielu rekordów (nie więcej niż parę tysięcy), za zwyczaj doprowadza do komunikatu time out. Jestem pewien, że jest jakiś szybszy sposób, tylko brak mi o wiedzy. Proszę o pomoc.
mwojcik
Nie wiem co robiles. ze dostales komunikat TimeOut, ale z tego co wnioskuje to wystarczy zwykla agregacja (COUNT) wiadomosci pogrupowanych (GROUP BY) wzgledem nadawcy.
Bez struktury bazy danych nic wiecej nie mozna napisac.
danielk
Można zrobić takie zaytanie:

SELECT count(nadawca), nadawca FROM tablica GROUP BY nadawca;

Nie testowałem tego dla kilku tysięcy rekordów. Nie znam czegoś szybszego.
son
Cytat(danielk @ 22.08.2007, 16:12:51 ) *
Można zrobić takie zaytanie:

SELECT count(nadawca), nadawca FROM tablica GROUP BY nadawca;

Nie testowałem tego dla kilku tysięcy rekordów. Nie znam czegoś szybszego.

No właśnie takie rozwiązanie jest fatalne, bo zapytanie trzeba mnożyć przez liczbę unikalnych nadawców, nie mówiąc już o tym, że trzeba najpierw stworzyć taką liste unikalnych nadawców. Właśnie takie coś dla większych baz może trwać kilkadziesiąt sekund.
mwojcik
Cytat(son @ 22.08.2007, 19:55:43 ) *
No właśnie takie rozwiązanie jest fatalne, bo zapytanie trzeba mnożyć przez liczbę unikalnych nadawców, nie mówiąc już o tym, że trzeba najpierw stworzyć taką liste unikalnych nadawców.

Nie rozumiem za bardzo...

Cytat
Właśnie takie coś dla większych baz może trwać kilkadziesiąt sekund.


Nie doceniasz baz danych - zeby takie pytanie sie wykonywalo kilkadziesiat sekund musialoby byc w bazie kilkadziesiat jak nie wiecej milionow rekordow, a watpie zebys mial tyle.
osiris
Cytat(son @ 22.08.2007, 19:55:43 ) *
No właśnie takie rozwiązanie jest fatalne, bo zapytanie trzeba mnożyć przez liczbę unikalnych nadawców, nie mówiąc już o tym, że trzeba najpierw stworzyć taką liste unikalnych nadawców. Właśnie takie coś dla większych baz może trwać kilkadziesiąt sekund.

Wyzej podane zapytanie jest optymalne.
Najwidocznie tak jak pisales: brakuje Ci wiedzy. To zapytanie wykonasz tylko raz, a w wyniku dostajesz tabele, z dwoma polami: nadawca, liczba wiadomosci dla danego nadawcy.
son
Racja Panowie zgadza się. Dzięki i sorki za zamieszanie wstydnis.gif
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.