sql >> Database teknologi >  >> RDS >> Mysql

Deltag vs. underforespørgsel

Underforespørgsler er den logisk korrekte måde at løse problemer med formen "Få fakta fra A, betinget af fakta fra B". I sådanne tilfælde giver det mere logisk mening at sætte B i en underforespørgsel end at lave en join. Det er også mere sikkert i praktisk forstand, da du ikke behøver at være forsigtig med at få duplikerede fakta fra A på grund af flere kampe mod B.

Rent praktisk kommer svaret dog normalt til præstation. Nogle optimeringsværktøjer sutter citroner, når de får en join kontra en underforespørgsel, og nogle sutter citroner den anden vej, og dette er optimeringsspecifikt, DBMS-versionsspecifikt og forespørgselsspecifikt.

Historisk set vinder eksplicitte joinforbindelser normalt, derfor er den etablerede visdom om, at joinforbindelser er bedre, men optimeringsværktøjer bliver hele tiden bedre, og derfor foretrækker jeg først at skrive forespørgsler på en logisk sammenhængende måde og derefter omstrukturere, hvis præstationsbegrænsninger berettiger dette.



  1. Indsæt flere rækker med PDO-forberedte erklæringer

  2. Eksporter tabeldata fra en SQL Server til en anden

  3. Formater tal med kommaer i PostgreSQL

  4. Opret et SQL Server Agent-skema med T-SQL