![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 3 Dołączył: 12.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
cześć,
potrzebuję pomocy z grupowaniem tj. mam tabelę
i chciałbym pobrać wszystkie wiersze, w których status_id jest najnowszy (max(date)) w ramach jednego object_id. Mówiąc krótko, dla każdego okiektu potrzebny mi najnowszy status. Działa (ale za wolno, bo ok. 200 ms)
Samo zrobienie:
nie działa, ponieważ zwraca pierwszy napotkany status, a nie ten pasujący do maksymalnej daty (nie najnowszy, a pierwszy insertowany). Jak powinno wyglądać najprostsze zapytanie, żeby zwrócić najnowszy status dla każdego obiektu ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Sorry, ale ja nie widze różnic pomiędzy tymi zapytaniami. Tym z (x,y) IN (..,..) a JOIN. Zresztą już wcześniej napisałem o JOIN. Optymalizator kosztowy powinien je na taki sam algorytm przerobić.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 3 Dołączył: 12.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Sorry, ale ja nie widze różnic pomiędzy tymi zapytaniami. Tym z (x,y) IN (..,..) a JOIN. Zresztą już wcześniej napisałem o JOIN. Optymalizator kosztowy powinien je na taki sam algorytm przerobić. Niestety, nie przerabia. mysql 5.5, ok 10k rekordów - jeśli to coś zmienia. Tak jak pisałem wcześniej zapytanie wykonuje się zbyt długo w pierwszej wersji, w drugiej krócej, ale też wiem, że można lepiej - tylko technicznie z wiedzą nie domagam. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 11:22 |