• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Oracle SQL - Paginacja

VPS Starter Arubacloud
0 głosów
657 wizyt
pytanie zadane 19 lipca 2016 w SQL, bazy danych przez maly93 Użytkownik (640 p.)
edycja 19 lipca 2016 przez maly93

Dzisiaj natknąłem się na problem z paginacją w Oracle SQL. W końcu udało mi się go rozwiązać używając takiego zapytania:

SELECT outer. FROM (SELECT ROWNUM rn, inner. FROM (  SELECT u.* FROM USERS u ORDER BY USER_ID) inner) outer WHERE outer.rn >= 0 AND outer.rn <= 10;

Ten kod znalazłem gdzieś w internecie. Zauważyłem że zanim otrzymam wyniki trochę mija czasu. I tutaj jest moje pytanie. Czy nie szybciej by było pobrać wszystkie rekordy i wybrać odpowiednie na serwerze (java, spring, hibernate)?

 

Dodam jeszcze że przed tym zapytanie wykonuje drugie a dokładniej Count'a.

1 odpowiedź

0 głosów
odpowiedź 19 lipca 2016 przez kosaa Stary wyjadacz (14,130 p.)
Ile czasu wykonuje Ci się zapytanie i ile masz rekordów w tabelach? No i możesz dać schemat bazy danych i co chcesz uzyskać. Dwa selecty w klauzuli FROM więc strzelam, że da się to zrobić optymalniej :P
komentarz 19 lipca 2016 przez maly93 Użytkownik (640 p.)
Aktualnie nie jestem w stanie sprawdzić ale trwało to z 3-5sek a do tego nie dodałem tutaj drugiego warunku (wybieranie po datach). Ale pamiętam że jak był ten warunek to wyrzucało 152 więc na pewno dużo więcej. A paginacja po 25 na stronę.

W miarę możliwości prosił bym ogólnie opisać :)
komentarz 19 lipca 2016 przez kosaa Stary wyjadacz (14,130 p.)
Schemat i opis tego co chcesz uzyskać poproszę. Bez kontekstu ciężko jest mi Tobie pomóc.
komentarz 19 lipca 2016 przez gromula Stary wyjadacz (10,070 p.)
Spróbuj zrobić benchtimer moment wywołania, moment przypisania
komentarz 19 lipca 2016 przez maly93 Użytkownik (640 p.)
Tabela:
Users
id
name
data_dodania

Chce wybrać użytkowników których data dodania jest z jakiegoś przedziału (czego nie ma jeszcze w tym zapytaniu wyżej).
Ponieważ wyświetlam tylko 25 użytkowników na stronę to tylko tylu chce pobierać za jednym razem.

Czyli tak na mojej stronie mogę wybrać z jakiego przedziału czasowego wyświetlić użytkowników a następnie chce ich wyświetlać po 25 na stronie.

Przy okazji chciałbym zapytać gdzie mogę poczytać o tym jak dane zapytania obciążają bazę danych.
komentarz 19 lipca 2016 przez kosaa Stary wyjadacz (14,130 p.)
SELECT
    *
FROM
    Users
WHERE
    data_dodania > x AND
    data_dodania < x
OFFSET 
    1 ROWS FETCH NEXT 25 ROWS ONLY;

?

komentarz 19 lipca 2016 przez maly93 Użytkownik (640 p.)
Próbowałem tak i nie działało. Jesteś pewny że to powinno działać? Czy teraz popatrzyłeś w neta i to znalazłeś i piszesz?
komentarz 19 lipca 2016 przez kosaa Stary wyjadacz (14,130 p.)
piszę z głowy

p.s. jaki masz format daty? timestamp, date, string?
komentarz 19 lipca 2016 przez maly93 Użytkownik (640 p.)
date. Coś takiego próbowałem zrobić ale nie działało.

A co z rozwiązaniem że java sb to wybierze? Będzie to gorsze rozwiązanie?

Podobne pytania

0 głosów
2 odpowiedzi 167 wizyt
pytanie zadane 14 stycznia 2023 w SQL, bazy danych przez haitoke Nowicjusz (240 p.)
0 głosów
0 odpowiedzi 152 wizyt
0 głosów
2 odpowiedzi 393 wizyt

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...