1. Sissejuhatus
MySQL on laialdaselt kasutatav relatsiooniline andmebaas, mida kasutatakse veebirakendustes ja andmebaaside haldamisel. Selle raames on ORDER BY
lause oluline tööriist, mis võimaldab päringutest saadud andmeid kindlate kriteeriumide alusel sorteerida. Käesolevas artiklis selgitame üksikasjalikult ORDER BY
lause põhikasutust, mitme veeru alusel sorteerimist, NULL
-väärtuste käsitlemist ja jõudluse optimeerimist. Lisaks kasutame konkreetseid näiteid ja jooniseid, et andmete töötlemist oleks lihtsam visuaalselt mõista.
2. ORDER BY lause põhistruktuur
ORDER BY
lauset kasutatakse päringutest saadud andmete järjestamiseks kas kasvavas (ASC
) või kahanevas (DESC
) järjekorras. Määrates veeru, mille alusel sorteerida, on võimalik andmeid korrastatumalt kuvada.
Põhistruktuur
SELECT * FROM table_name
ORDER BY column_name ASC | DESC;
- Kasvav (ASC): Järjestab väärtused väiksemast suuremani. Kui
ASC
märkimata jätta, on kasvav järjestus vaikimisi. - Kahanev (DESC): Järjestab väärtused suuremast väiksemani.
Näide
Järgmine päring järjestab kliendiandmete tabeli vanuse järgi kasvavas järjekorras.
SELECT * FROM customers
ORDER BY age ASC;
Joonis 1: Kliendiandmed enne sorteerimist
Nimi | Vanus | Aadress |
---|---|---|
Yamada | 40 | Tōkyō |
Satō | 25 | Ōsaka |
Suzuki | 35 | Nagoya |
Joonis 2: Kliendiandmed pärast sorteerimist
Nimi | Vanus | Aadress |
---|---|---|
Satō | 25 | Ōsaka |
Suzuki | 35 | Nagoya |
Yamada | 40 | Tōkyō |
Oluline märkus
ORDER BY
lause peab alati olema SELECT
-päringu lõpus. Kui kasutatakse muid lauseid (nt WHERE
või GROUP BY
), tuleb ORDER BY
paigutada nende järele.
3. Mitme veeru järgi sorteerimine
ORDER BY
lause võimaldab sorteerida mitme veeru alusel. See aitab andmeid täpsemalt korrastada. Näiteks, pärast esimest veergu sorteerimist kasutatakse teist veergu juhul, kui esimeses on samad väärtused.
Süntaksi näide
SELECT * FROM table_name
ORDER BY column1 ASC, column2 DESC;
Praktiline näide
Järgmine päring järjestab andmed aadressi järgi kahanevalt ja seejärel vanuse järgi kasvavalt.
SELECT * FROM customers
ORDER BY address DESC, age ASC;
Joonis 3: Mitme veeru alusel sorteeritud tulemused
Nimi | Aadress | Vanus |
---|---|---|
Yamada | Tōkyō | 40 |
Satō | Ōsaka | 25 |
Suzuki | Nagoya | 35 |
Nagu näha, sorteeritakse esmalt aadressi (address
) järgi kahanevas järjekorras. Kui samas aadressis on mitu klienti, siis sorteeritakse vanuse (age
) järgi kasvavas järjekorras.
4. NULL-väärtuste käsitlemine
SQL-is tähistab NULL
väärtus andmete puudumist. ORDER BY
lause puhul käsitletakse NULL
-väärtusi eriliselt: ASC
korral kuvatakse need esimesena, DESC
korral aga viimasena.
NULL
-väärtuste reeglid
- Kasvav (ASC):
NULL
-väärtused kuvatakse alguses. - Kahanev (DESC):
NULL
-väärtused kuvatakse lõpus.
Näide
Järgmine päring kuvab esmalt hinnaga NULL
tooted ning seejärel järjestab ülejäänud hinnad kasvavas järjekorras.
SELECT * FROM products
ORDER BY price ASC;
Joonis 4: NULL-väärtusi sisaldav sorteerimine
Toote nimi | Hind |
---|---|
Toode A | NULL |
Toode B | 1000 |
Toode C | 2000 |
NULL-väärtuste kuvamine lõpus
Kui soovite, et NULL
-väärtused kuvataks viimases järjekorras, saate kasutada ISNULL()
funktsiooni.
SELECT * FROM products
ORDER BY ISNULL(price), price ASC;
5. ORDER BY ja WHERE kooskasutus
Kombineerides WHERE
ja ORDER BY
, saab esmalt filtreerida tingimustele vastavad andmed ning seejärel need sorteerida. Nii on võimalik andmeid efektiivselt töödelda ja kuvada.
Põhistruktuur
SELECT * FROM table_name
WHERE condition
ORDER BY column_name ASC | DESC;
Näide
Järgmine päring kuvab vähemalt 30-aastased kliendid ja järjestab nad nime järgi kasvavas järjekorras.
SELECT * FROM customers
WHERE age >= 30
ORDER BY name ASC;
See päring näitab, kuidas WHERE
abil filtreeritud andmeid saab ORDER BY
abil sorteerida.
6. ORDER BY ja GROUP BY koos
GROUP BY
lause võimaldab andmeid grupeerida ning koos ORDER BY
lausega saab grupeeritud andmeid järjestada.
Näide
Järgmine päring loendab klientide arvu piirkonna kaupa ja järjestab tulemused kahanevas järjekorras.
SELECT region, COUNT(*)
FROM customers
GROUP BY region
ORDER BY COUNT(*) DESC;
Joonis 5: Grupeeritud tulemuste sorteerimine
Piirkond | Kliendid |
---|---|
Tōkyō | 50 |
Ōsaka | 30 |
Nagoya | 20 |
7. ORDER BY kasutamine kuupäevade ja tekstiväljadega
ORDER BY
lauset saab kasutada ka kuupäevade ja tekstiväljade puhul. Näiteks, kõige uuemate andmete kuvamiseks või andmete sorteerimiseks tähestikulises järjekorras.
Kuupäevade järgi sorteerimine
SELECT * FROM orders
ORDER BY order_date DESC;
See päring kuvab kõige uuemad tellimused esimesena.
Tekstiväljade järgi sorteerimine
Järgmine päring sorteerib töötajad nime järgi kasvavas järjekorras (tähestiku järgi).
SELECT * FROM employees
ORDER BY name ASC;
8. ORDER BY jõudluse optimeerimine
Suurte andmemahtude sorteerimisel võib tekkida jõudlusprobleeme. Siin on mõned tehnikad, kuidas ORDER BY
lauset kiiremaks muuta.
Indeksite kasutamine
Kui lisada indeks veerule, mida kasutatakse sorteerimisel, saab päringu kiirust oluliselt parandada.
CREATE INDEX idx_column_name ON table_name(column_name);
LIMIT kooskasutus
LIMIT
lause abil saab piirata sorteeritud tulemuste arvu. See vähendab töötlemise mahtu ja kiirendab päringut.
SELECT * FROM customers
ORDER BY age ASC
LIMIT 10;
Suurte andmehulkade töötlemine
Suurte andmehulkade puhul on oluline ka MySQL seadistuste optimeerimine. Näiteks, sort_buffer_size
väärtuse suurendamine parandab sorteerimise kiirust.
SET GLOBAL sort_buffer_size = 2M;
Samuti on kasulik kasutada EXPLAIN
käsku, et näha päringu täitmisplaani ja hinnata optimeerimisvõimalusi.
EXPLAIN SELECT * FROM customers ORDER BY age ASC;
9. Kokkuvõte
Selles artiklis selgitasime MySQL ORDER BY
lause kasutamist alates põhialustest kuni keerukamate juhtumiteni. ORDER BY
on oluline tööriist andmete korrastamiseks ja nende selgemaks kuvamiseks — olgu tegu kasvava või kahaneva järjestusega, mitme veeru sorteerimise või NULL
-väärtuste käsitlemisega.
Samuti käsitlesime jõudluse optimeerimist, et tõhusalt töötada suurte andmehulkadega. Indeksite kasutamine, LIMIT
lause ja sort_buffer_size
seadistamine aitavad sorteerimisprotsessi kiirendada.
Kui õpite ORDER BY
lausest maksimumi võtma, saate andmete sorteerimise muuta oluliselt tõhusamaks ning parandada nii rakenduste kui ka andmebaasi üldist jõudlust. Rakendage neid teadmisi kindlasti oma igapäevases töös.
ORDER BY kasutusjuhtumid päriselus
Lõpetuseks mõned levinud olukorrad, kus ORDER BY
kasutatakse:
- Aruannete koostamine:
Näiteks müügiaruannete loomisel saab tooteid sorteerida müügisumma järgi või kuvada tulemusi piirkonna kaupa. - Lehekülgede kaupa kuvamine (paginatsioon):
Veebirakendustes saabORDER BY
jaLIMIT
abil andmeid efektiivselt lehtede kaupa kuvada. - Andmebaasi puhastamine:
Vana andmete kustutamisel või spetsiifiliste kirjete leidmisel aitabORDER BY
kiiresti vajalikud read üles leida.
Need kasutusjuhtumid on igapäevased ning ORDER BY
lause tõhus kasutamine võimaldab töövoogusid märkimisväärselt optimeerida.