Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Liczenie rekordów
Forum PHP.pl > Forum > Bazy danych > MySQL
acztery
witam,

mam tabele z 220 tys rekordów

i chce policzyc wszystkie ktore spelniaja jakis warunek ale to tra bardzo dlugo. ok 30 sek.

  1. SELECT Count(id)
  2. FROM prg
  3. WHERE UserID='Ux1'


czy mysql ma jakies wbudowane funkcje np count_big tak jak w sql server 2000
tmk
Pamiętałeś o indeksie na UserID?
acztery
tak i na id tez jest czy na postgresie bedzie szybciej z bardzo duzo iloscia rekordów( ok 1 000 000 )
DeyV
Manual MySQL podpowiada


Cytat
If you very often need to calculate results such as counts based on information from a lot of rows, it's probably much better to introduce a new table and update the counter in real time. An update of the following form is very fast:
  1. UPDATE tbl_name SET count_col=count_col+1 WHERE key_col=constant;


This is really important when you use MySQL storage engines such as MyISAM and ISAM that have only table-level locking (multiple readers / single writers). This will also give better performance with most databases, because the row locking manager in this case will have less to do.
acztery
nie rozumiem to robi update.

---

czyli przy dodawaniu rekordu zwieksza sie ilosc dodanych rekorow dla danego usera i wtedy zamiast liczyc selectem wyciagam ile danych user ma rekordów tak ?
czy nie ?
DeyV
Tak.
Czyli po prostu dodatkowa tablea / kolumna, przechowująca informację o ilości rekordów przypożądkowanych do danego usera.


W PgSQL można by sobie życie ułatwić jeszcze bardziej, i dodać trigery uruchamiane podczas dodawania i usuwania rekordów z prg które wprowadzałyby tą wartość automatycznie.

Niestety - nie ma innego wydajnego rozwiązania. W każdej bazie, szczególnie przy kluczach tekstowych, count() będzie wolne.


Ewentualnie możesz sprawdzić, jak wyglądałaby wydajność wyrażenia:
  1. SELECT SQL_CALC_FOUND_ROWS *
  2. FROM tbl_name
  3. WHERE id = " "
acztery
DeyV wiem dzieki juz to wyczytałem , wydaje się być szybciej. dzięki
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.