Aktywne Wpisy
panthererose +9
Mirki, ile u Was kosztuje wymiana opon i skąd jesteście? Bo z sezonu na sezon jest coraz drożej. Z letnich na zimowe płaciłam 120, a teraz z zimowych na letnie 130 - obwarzanek warszawski.
#wulkanizacja #opony #wymiana
#wulkanizacja #opony #wymiana
WielkiNos +230
Wiedzieliście, że są ludzie, którzy robiąc sobie dzieci oczekują od nich opieki na starość?
Skazując własne dziecka na taki los każe mu się rezygnować z własnego życia żeby poświęciło je podcieraniu nam odbytu podczas gdy są domy opieki. Pierwsze do demonizowania takich miejsc są osoby, które zapewne osobiście się starymi ludźmi opiekować nie będą.
#dzieci #starosc #bekazpodludzi #antynatalizm #logikaniebieskichpaskow
Skazując własne dziecka na taki los każe mu się rezygnować z własnego życia żeby poświęciło je podcieraniu nam odbytu podczas gdy są domy opieki. Pierwsze do demonizowania takich miejsc są osoby, które zapewne osobiście się starymi ludźmi opiekować nie będą.
#dzieci #starosc #bekazpodludzi #antynatalizm #logikaniebieskichpaskow
Aktywne Znaleziska
Zawiera treści 18+
Ta treść została oznaczona jako materiał kontrowersyjny lub dla dorosłych.
Np. jest tabela która zawiera id (number), jakąś datę i inne dane.
Jak najlepiej wyciągnąć tylko pierwszy rekord zwracany przez zapytanie
Select * order by jakas_data desc, id desc ?
Zależy mi na jak największej wydajności.
#oracle #sql #plsql #bazydanych
LIMIT 1
?Komentarz usunięty przez autora
Można zrobić podzapytanie i w nim order oraz hint FIRST_ROW, a rownum użyć w zapytaniu nadrzędnym i tak mam w tej chwili zrobione ale czy nie ma czegoś szybszego?
Szukam doświadczonej osoby, która coś podpowie. Jak nie wiecie to nie piszcie bo głupoty piszecie.
@TomaszWKS: Sorry, nie spojrzałem na tagi, ja to tylko postgres ( ͡° ͜ʖ ͡°)
Są dwie możliwości co najmniej:
select * from orders where data = (
select max(data) from orders)
and rownum = 1
select * from (
select * from orders order by data desc
) where rownum = 1
Też bym poszedł w MAX() nie robiąc sortowania.
@TomaszWKS: utaj jest kilka ciekawych pomysłów, ale jak to się mówi...
'the answer is always -- BENCHMARK IT....'
https://stackoverflow.com/questions/2854257/sql-how-to-select-a-row-having-a-column-with-max-value
Jeśli nie masz żadnych innych wymagań odnośnie zwracanych danych, a chcesz największą wartość jednej z kolumn to max() będzie najbardziej wydajny jako wbudowana funkcja silnika. Nie ma co kombinować z czymś innym.
W ostatecznosci mozesz dorzucić DISTINCT jeśli odpytywana kolumna może zwrócić wiele wierszy, czyli SELECT MAX(DISTINCT column_1) FROM ORDERS;
Nie polecam opcji z podzapytaniem wykorzystujacym sortowaniem, bo wtedy i tak silnik musi odczytać i wrzucić do pamięci całą tabele
Ale bzdury.
Po pierwsze napisałem wyraźnie że potrzebuję wyciągnąć cały rekord, a nie jedną wartość.
Po drugie MAX bez grupowania zawsze zwróci jeden rekord więc nie wiem po co ten DISTINCT?
Po trzecie proponuję poczytać: https://blogs.oracle.com/oraclemagazine/on-rownum-and-limiting-results
Zwłaszcza punkt: Top- N Query Processing with ROWNUM
AD.1 Wybacz, przeoczyłem to :)
AD.2 Wydawało mi się, że na Postgresie pomimo używania MAX(), jeśli masz wiele wartości takich samych (np. ta sama data), na kolumnie na której jej używasz to zwróci Ci wszystkie wiersze z tą wartością. Szybkie sprawdzenie dokumentacji Postgresa i jednak tak sie nie dzieje - DISCTINCT nie potrzebny. Zwracam honor po raz drugi, nie bawiłem się dużo w Postgresie.
AD3. Dokładnie o tym pisałem. W
Ehhh. Słaby jestem w wykopy, nie ogarnąłem poprawnie załącznika. Tutaj, chyba lepiej.
I zrzuca wszystko na dysk żeby posortować. Użycie ROWNUM sprawia, że nie zrzuca na dysk bo