Als de indexen correct worden gebruikt, is het bijna altijd efficiënter om een JOIN te gebruiken. De nadruk wordt gelegd omdat de beste efficiëntie niet altijd gelijk staat aan de beste prestatie.
Er is echter niet echt een pasklaar antwoord; je moet een zoekopdracht analyseren met EXPLAIN
om ervoor te zorgen dat de indexen inderdaad worden gebruikt, dat er geen onnodig gebruik van tijdelijke tabellen is, enz. In sommige gevallen , voorwaarden spannen samen om een zoekopdracht te maken die niet kan gebruik indexen. In die gevallen kan het misschien wees sneller om de zoekopdrachten in stukken te scheiden op de manier die u hebt aangegeven.
Als ik dergelijke code in een bestaand project zou tegenkomen, zou ik het in twijfel trekken:controleer de query, bedenk verschillende manieren om de query uit te voeren, zorg ervoor dat deze dingen zijn overwogen, bouw een wetenschappelijke, door feiten ondersteunde case voor of tegen de praktijk . Zorg ervoor dat de oorspronkelijke ontwikkelaars hun due diligence hebben gedaan, aangezien het niet oppervlakkig gebruiken van een JOIN wijst op een slecht database- of queryontwerp. Uiteindelijk spreken de resultaten echter luid en als alle optimalisaties en correcties toch leiden tot een langzamere join dan het gebruik van queryfragmenten biedt, dan prevaleert de snellere oplossing. Benchmark en handel naar de resultaten van de benchmark; er is geen geval in softwareontwerp dat je slechte prestaties moet inruilen voor het vasthouden aan willekeurige regels over wat je wel of niet moet doen. De best presterende methode is de beste methode.