![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 0 Dołączył: 6.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam posiadam poniższe zapytanie czy można to zapytanie przyśpieszyć .
w tym zapytaniu GROUP BY segreguje alfabetycznie miasta a potrzebuje aby segregowało według "COUNT(miasto) as liczba_obiektow" czyli od największej ilości obiektów w bazie
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Wywal having i warunek stamtąd przenieś do WHERE
Poza tym bez struktury tabeli (SHOW CREATE TABLE) nie za bardzo można więcej powiedzieć. -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
A czy nie mógłbyś tej liczby (liczba_obeitków) trzymać w formie statycznej w bazie danych (w dodatkowej kolumnie) i przy dodaniu/usunięciu rekordu z drugiej tabeli inkrementować/dekrementować tą wartość? Pozbyłbyś się całego COUNT().
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 0 Dołączył: 6.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Z WHERE działa zdecydowanie szybciej
A jeśli chodzi o strukturę tabeli to tabela "Oferty " - miasto - region tabela "Miasta" - id_miasta -powiat - nazwa_miasta Cytat A czy nie mógłbyś tej liczby (liczba_obeitków) trzymać w formie statycznej w bazie danych (w dodatkowej kolumnie) i przy dodaniu/usunięciu rekordu z drugiej tabeli inkrementować/dekrementować tą wartość? Pozbyłbyś się całego COUNT(). Na pewno byłaby taka możliwość liczba zmienia sie w czasie i musiałbym dopisać jakiś skrypcik w php aby odczytywał aktualny stan i zapisywał jako statycznną liczbę. Chyba że jest jakiś inny sposób zliczania według ilości ofert w danej chwili. Wolałbym wykombinować coś w zapytaniu |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Wystarczy utworzyć TRIGGER który zwiększy wartość o jeden przy dodawaniu, zmiejszy o jeden przy usuwaniu i ewentualnie jeszcze jeden by przy aktualizacji zmieniającej przynależność zmniejszyć o jeden w starym i zwiększyć o jeden w nowym.
To Ci najbardziej przyspieszy zapytanie bo wyeliminujesz zarówno COUNT() jak i GROUP BY. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 0 Dołączył: 6.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za podpowiedz lecz nie wiem jak napisać taki trigger.
I nie wiem czy trigger musi zapisywać w tej tabeli w której te dane są wyciągane . Chodzi mi o to że z tabeli "Oferty" można pobrać te dane ale nie da rady tam dodać kolumny Ilość ofert. W drugiej tabeli " Miasta" natomiast występują takie same nazwy miast lecz z innego regionu i również taka kolumna jest wykluczona . Po prostu nigdy nie interesowałem się triggerem i nie orientuję się jak to działa będę musiał coś o tym poczytać . |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 21:46 |