![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
witam,
mam tabele z 220 tys rekordów i chce policzyc wszystkie ktore spelniaja jakis warunek ale to tra bardzo dlugo. ok 30 sek.
czy mysql ma jakies wbudowane funkcje np count_big tak jak w sql server 2000 Ten post edytował acztery 15.03.2006, 00:18:26 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 15.04.2004 Skąd: w-wa Ostrzeżenie: (0%) ![]() ![]() |
Pamiętałeś o indeksie na UserID?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
tak i na id tez jest czy na postgresie bedzie szybciej z bardzo duzo iloscia rekordów( ok 1 000 000 )
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
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:
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. -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
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 ? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
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:
Ten post edytował DeyV 15.03.2006, 01:58:30 -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
DeyV wiem dzieki juz to wyczytałem , wydaje się być szybciej. dzięki
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 16:42 |