![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 500 Pomógł: 1 Dołączył: 29.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, chcę pobrać wszystkie dane z tabeli z użytkownikami i chciałbym aby do tych danych dołączyła suma rekordów z innej tabeli w których pole user_id jest równe id danego użytkownika.
Próbowałem coś w tym stylu
jednak to zapytanie nie zwraca mi wszystkich rekordów. Jak mogę to poprawić? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Mam swoją teorię na tak gówniane grupowanie w MySQL - po prostu nie wykorzystuje indeksów do podzapytań i jakoś musieli to zoptymalizować. Niemniej uważam, że jedynym słusznym trybem jest ANSI.
A jak zapytanie powinno się wykonać? 1. SELECT user_id, count(id) comments FROM komentarze GROUP BY user_id wykonać + zapamiętać w cachu. Oczywiście zakładam, że user_id to FK do uzytkownicy, więc pole indeksowane. Więc zapytanie jest szybkie. 2. uzytkownicy LEFT JOIN tabela_powyzej ON pola_indeksowane. Żadnej filozofii - szybkie indeksy Nie ma WHERE, nie ma ORDER - nie ma narzutu. Co robi MySQL to nie wiem, na pewno rzeźbi... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 06:56 |