Archief van de categorie ‘SQL’
Queries optimaliseren
17 April 2007Om het resultaat van een query te krijgen heb je soms verschillende mogelijkheden. De vraag is dan dikwijls: Wat is nu de efficiëntste manier? Hiervoor heb je enkele technieken ter beschikking om de verschillende mogelijkheden te testen. Dit zijn eerst en vooral technieken voor mysql. Ik heb niet verder gezocht in hoeverre deze technieken ook werken op andere databasetypes.
explain gebruiken voor een query is een eerste techniek. Hiermee kan je eerst en vooral zien welke indexes er gebruikt worden. Deze techniek is dan ook vooral handig bij wat ingewikkeldere queries.
explain select * from table
Het resultaat is één of meerdere rijen met informatie over hoe de query wordt opgevraagd in de tabel of tabellen. Alle uitleg over wat de exacte betekenis is vind je in de MySQL 5.0 reference.
Later meer.
SQL joins
21 February 2007Als je in aanraking komt met SQL dan kom je hoogst waarschijnlijk ook in aanraking met het probleem dat je velden uit twee (of meerdere) tabellen wil selecteren. Dit kan je doen door middel van JOIN.
Hieronder kan je de meest gebruikte terugvinden.
- INNER JOIN
- Met behulp van INNER JOIN krijg je alle record uit de eerste tabel met een bijhorend record uit de tweede tabel.
- let op: indien er geen bijhorend record is gevonden in de tweede tabel dan zal het record uit tabel één niet worden weergegeven in de resultaattabel. Indien er meerdere bijhorende records worden gevonden in de tweede tabel dan zullen deze allemaal in de resultaattabel voorkomen.
-
SQL:
-
SELECT * FROM tabel1 AS t1 INNER JOIN tabel2 AS t2 ON t1.id = t2.id;
-
- LEFT OUTER JOIN
- De LEFT OUTER JOIN zorgt ervoor dat alle records uit tabel één worden weergegeven, ook als er geen bijhorend record is gevonden in tabel twee. Indien er geen bijhorend record is gevonden zullen de velden null bevatten.
-
SQL:
-
SELECT * FROM tabel1 AS t1 LEFT OUTER JOIN tabel2 AS t2 ON t1.id = t2.id;
-
- RIGHT OUTER JOIN
- De RIGHT OUTER JOIN doet hetzelfde als de LEFT OUTER JOIN maar zorgt ervoor dat alle record uit tabel twee worden weergegeven in de resultaattabel.
-
SQL:
-
SELECT * FROM tabel1 AS t1 RIGHT OUTER JOIN tabel2 AS t2 ON t1.id = t2.id;
-
Indien de velden in alle twee de tabellen dezelfde naam hebben kan je 't1.id = t2.id' vervangen door 'USING(id)' gebruiken.
Opmerkingen, tips zijn steeds welkom.
Recente reacties