Wat zijn de voor- en nadelen van een join of een subquery?

...

Databasequery's halen specifieke informatie uit de database.

Een subquery is een query binnen een andere query. Een subquery kan ook een andere subquery bevatten. Dit zijn naar verluidt "geneste" subquery's. Een join is wanneer er naar twee of meer tabellen wordt verwezen in de 'From'-clausule van de query. Verschillende database-engines kunnen subquery's en joins op verschillende manieren optimaliseren. De optimizer van DB2 transformeert bijvoorbeeld een subquery naar een join als aan bepaalde criteria wordt voldaan. In sommige gevallen levert een join betere prestaties op dan een subquery.

Wat maakt een subquery

Een subquery is een "SELECT"-instructie binnen de "WHERE"- of "HAVING"-clausule van een buitenste "INSERT", "UPDATE", "MERGE" of "DELETE" -instructie. De subquery wordt ook wel de 'inner query' of 'inner select' genoemd. De subquery kan een "FROM"-clausule hebben met een of meer tabellen en kan optioneel een "WHERE", "GROUP BY" of "HAVING" -clausule hebben. Het staat altijd tussen haakjes.

Video van de dag

Voor- en nadelen van subquery's

Subquery's zijn voordelig omdat ze de query structureren om elk deel van de instructie te isoleren, dezelfde bewerking uitvoeren waarvoor normaal complexe verbindingen en verbindingen nodig zijn en die gemakkelijker te lezen. Subquery's vormden zelfs de basis voor de naam "Structured Query Language" (SQL) vanwege hun gemakkelijk leesbare structuur. Een nadeel is dat je een tabel niet kunt wijzigen en uit dezelfde tabel kunt selecteren binnen een subquery in hetzelfde SQL-statement. Subquery's kunnen ook langer duren om uit te voeren dan een join, vanwege de manier waarop de database-optimizer ze verwerkt.

Wat maakt een lidmaatschap?

De meeste subquery's kunnen worden herschreven als joins en de meeste joins kunnen worden herschreven als subquery's. Een join definieert twee of meer tabellen door een gerelateerde kolom. Tabellen worden meestal samengevoegd op primaire en externe sleutels. Een werknemerstabel kan bijvoorbeeld een primaire sleutel van een werknemers-ID-kolom hebben, terwijl een urenstaattabel ook een werknemer-ID-kolom heeft die een refererende sleutel is voor de werknemerstabel. De SQL-join kan worden geschreven als "WHERE employee.empid = timesheet.empid" of "FROM worker JOIN timesheet ON (employee.empid = timesheet.empid)."

Voordelen en nadelen van joins

Het belangrijkste voordeel van een join is dat deze sneller wordt uitgevoerd. De prestatieverbetering is mogelijk niet merkbaar voor de eindgebruiker. Omdat de kolommen echter een specifieke naam hebben, geïndexeerd en geoptimaliseerd zijn door de database-engine, zal de ophaaltijd bijna altijd sneller zijn dan die van een subquery. Er zijn ook binnen- en buitenverbindingen, linker- en rechterverbindingen, volledige verbindingen en dwarsverbindingen. Een nadeel van het gebruik van joins is dat ze niet zo gemakkelijk te lezen zijn als subquery's. Een ander nadeel is dat het verwarrend kan zijn welke join het juiste type join is om te gebruiken om de juiste gewenste resultatenset op te leveren.