Egal ob PostGIS oder Rasdaman - am Ende werden alle Anfragen in SQL an die Datenbank weitergegeben. Wie schnell die Datenbank die Anfragen bearbeitet liegt dabei sehr stark an den Algorithmen, die im SQL verwendet wurden. Bei über 95% aller Beschwerden, dass die Datenbank zu langsam ist, liegt die Ursache an einer ungünstig gewählten SQL-Zusammenstellung.
Der Vortrag zeigt auf, wie der PostgreSQL-Planer SQL-Anfragen verarbeitet, was der Unterschied zwischen INNER und OUTER Joins ist und wie SQL-Anfragen analysiert werden können. Darüber hinaus gibt es Tips und Tricks was zur Behebung langsamer Ausführungsschritte eventuell unternommen werden könnte. Vieles, des hier gezeigten, lässt sich auch auf andere Datenbanksysteme übertragen.
4. SQL
Data Definition Language
CREATE, ALTER, DROP
Data Modification Language
INSERT, UPDATE, DELETE
Data Query Language
SELECT
Data Control Language
GRANT, REVOKE
Transaction Control Language
START TRANSACTION,
SAVEPOINT, COMMIT,
ROLLBACK
6. Joins
B
B
A B A
A B A
A B
INNER JOINOUTER JOINS
LEFT JOIN RIGHT JOIN
SELECT * FROM A JOIN B ON A.id=B.id;
SELECT * FROM A, B WHERE A.id=B.id;
SELECT A.* FROM A WHERE A.id IN
(SELECT B.id FROM B);
SELECT * FROM A LEFT JOIN B
ON A.id=B.id
WHERE B.id IS NULL
SELECT * FROM A RIGHT JOIN B
ON B.id=A.id
WHERE A.id IS NULL
B
A B
FULL JOIN
A
SELECT * FROM A FULL JOIN B
ON A.id=B.id
WHERE A.id IS NULL OR B.id is NULL
20. Nested Loop
Index A
Blatt 1
Blatt 2
Blatt 3
...
Blatt n
Tabelle A
Page 1
Page 2
Page 3
...
Page n
Wurzel
Index B
Blatt 1
Blatt 2
Blatt 3
...
Blatt n
Tabelle B
Page 1
Page 2
Page 3
...
Page n
Wurzel
22. Hash Join
1. Datensatz 2. DatensatzHash Lookup
•Hash wird erzeugt und zum Joinen genutzt
•Verknüpfung von großer und kleiner Tabelle
•Hoher work_mem
•Notfall-Mechanismus schützt vor Speicherüberlauf