Oracle SQL nam omogoča manipulacijo in upravljanje podatkov v relacijskih bazah podatkov. Pogoste naloge vključujejo poizvedovanje po podatkih, ustvarjanje tabel in razvoj zapletenih rutin za obdelavo podatkov. Ena pogosta naloga, ki jo razvijalci opravijo s SQL, je izbiranje določenih vrstic iz tabele baze podatkov. Včasih bomo morda morali omejiti število vrstic, ki jih bomo izbrali, pogosto zaradi učinkovitosti. Ko v Oracle SQL napišete stavek »SELECT«, privzeto pridobi vse vrstice iz določene tabele, ki ustrezajo vašim kriterijem. Kaj pa, če želimo le prvih 10 vrstic? V tem priročniku bomo prikazali, kako izbrati samo prvih 10 vrstic v Oracle SQL.
IZBERI *
OD (IZBERI *
IZ vaše_mize
UREDI PO some_column)
WHERE ROWNUM <= 10; [/Koda]
Oracle SQL uporablja poseben psevdo stolpec, imenovan “ROWNUM” da bi razvijalcem omogočili izvajanje takšnih operacij. Ta psevdostolpec nam poda številko vsake vrstice, ko jo pridobimo, začenši od 1 in vse do poljubnega števila vrstic v poizvedbi.
Podrobna razlaga kode
Razčlenimo, kaj ta poizvedba pomeni.
[code lang=”Oracle SQL”]
SELECT * FROM (SELECT * FROM vaša_tabela ORDER BY some_column)
Ta prvi del poizvedbe izbere vse stolpce iz vaše tabele in jih razvrsti po »some_column«. Razvrščamo ga, ker je ROWNUM dodeljen vrsticam za klavzulo order by in pred kakršnim koli filtriranjem se odvija.
WHERE ROWNUM <= 10; [/code] V drugem delu poizvedbe pride v poštev psevdostolpec "ROWNUM". Oraclu v bistvu pove, naj nam posreduje samo vrstice, kjer je ROWNUM 10 ali manj, torej prvih 10 vrstic. Ključna opomba pri tem je, da so vrednosti ROWNUM dodeljene pridobljenim vrsticam, ki se začnejo z 1, vrednosti pa niso odobrene, dokler ni klavzula "ORDER BY" v celoti obdelana.
ROWNUM in Performance
Uporaba VREDNOST lahko močno izboljša zmogljivost, zlasti pri delu z velikimi količinami podatkov. Oraclu ni treba pridobiti vseh podatkov z diska in jih shraniti v pomnilnik, preden začne vračati rezultate. Rezultate lahko vrne takoj, ko dobi prvih 10, ki izpolnjujejo vse pogoje v ukazu SQL.
Podobne funkcije
Podobna funkcija kot ROWNUM v Oracle SQL je PRINESI SAMO PRVIH n VRSTIC. Vendar je ta klavzula na voljo samo v Oracle 12c in novejših različicah.
[code lang=”Oracle SQL”]
IZBERI *
IZ vaše_mize
ORDER BY some_column
PRINESI SAMO PRVIH 10 VRSTIC;
Na splošno Oracle SQL programerjem ponuja več uporabnih tehnik za omejevanje števila vrstic, ki jih vrne poizvedba SELECT.