Andmebaaside ajaveeb

Mõtteid andmebaasidest, andmebaasisüsteemidest ja nende kavandamisest

Miks mõnikord peab koos kokkuvõttefunktsiooni kasutamisega kasutama GROUP BY klauslit ja mõnikord ei pea?

Järgnevad koodinäited põhinevad enamasti MS Accessil, kuid kirjeldatud põhimõtted kehtivad SQLis üldiselt.Oletame, et ülesandeks on leida iga aasta kohta, millal on alanud mõni reserveerimine, sellel aastal alanud reserveerimiste arv.


Kas saate tuua näite sellest, kuidas ebaotstarbekas SQL ülesande lahendus mõjutab vastuse saamise kiirust?

Olgu meil PostgreSQL andmebaas järgmise kontseptuaalse struktuuriga:[Facility]-1---------------0...*-[Health_care_visit] Facility - 50_000 ridaHealth_care_visit - 1_000_000 rida.Järgnevad ka...


Kas korduste eemaldamine IN/NOT IN alampäringus muudab lause täitmise kiiremaks või mitte?

Sõltub andmebaasisüsteemist. Näiteks PostgreSQLis on sellel suur mõju, MySQLis ei ole mõju. PostgreSQLis aeglustab korduste eemaldamine alampäringus IN päringu täitmist kolm korda kuid muudab NOT IN päringu täitmise absurdselt palju kiiremaks...


Kas UPDATE lause võiks kirjutada nii, et WHERE klauslisse kirjutatud tingimuse asemel kirjutatakse SET klauslisse tingimus, mille täidetuse korral uuendatakse vastavat rida?

Süntaksi mõttes on see tehtav ja annaks soovituse tulemus, kuid PostgreSQL (16) näitel oleks see halva jõudlusega lahendus.Vaatame näidet.Andmebaasis on tabel Health_care_visit, kus on üks miljon rida.


Millal kasutada SQLis tabelite ühendamist ja millal alampäringut?

SQL on keeleliselt liiane, mis tähendab, et aastate jooksul on SQL keelt täiendatud aina uute keelekonstruktsioonidega...


Kuidas teistes andmebaasisüsteemides realiseerida PostgreSQLi FILTER predikaati, mida saab kasutada koos kokkuvõttefunktsiooniga?

PostgreSQLis saab kokkuvõttefunktsioonidega (nt Count, Min, Max, Sum, Avg) koos kasutada FILTER klaus...


Kuidas arvutada SQLis protsenti nii, et ei peaks sama tabelit mitmekordselt lugema?

PostgreSQLis on andmebaas järgmise kontseptuaalse struktuuriga.[Facility_type]-1-------0..*-[Facility]-1---------------0..*-[Health_care_visit]Tabelis Facility_type on 5 rida.Tabelis Facility on 5_000 r...


Kuidas kasutada õigesti TOP (MS Access) ja FETCH FIRST n ROWS WITH TIES (PostgreSQL) predikaate väärtuste jadas kohal x olevate väärtuste leidmiseks?

TOP n - saab kasutada MS Accessis (samaväärset TOP ... WITH TIES saab kasutada MS SQL Serveris). SQL standard ei kirjelda. LIMIT n - Saab kasutada nt PostgreSQLis (ja ka nt LibreOffice Ba...


Kuidas konkateneerida MS Accessis, PostgreSQLis ja LibreOffice Baseis tekstilisi väärtuseid, kui üks väärtus puudub (on NULL)?

Oletame, et andmebaasis on tabel, kuhu on lisatud kaks rida andmeid. Ühel isikul perenimi puudub (on NULL).CREATE TABLE Isik(isik_id INTEGER,eesnimi VARCHAR(50) NOT NULL,perenimi VARCHAR(50),


Kuidas oleks PostgreSQLis töökiiruse mõttes kõige efektiivsem leida andmed ühest tabelist ja väljastada tulemuses ka tõeväärtus, mis leitakse teises tabelis olevate andmete põhjal?

Järgnev katsetus on tehtud PostgreSQL (16) põhjal.Andmebaasis on tabelid järgmise kontseptuaalse struktuuriga:[Person]-1----------0..*-[Health_care_visit]Tabelis Person on 70_000 rida.Tabelis Hea...