De beste manier om erachter te komen is natuurlijk om te testen. Het antwoord kan verschillen, afhankelijk van de grootte van de dataset, het aantal verschillende metasleutels, hun distributie (hebben alle entiteiten waarden voor alle metasleutels? of slechts voor enkele?), de instellingen van uw database server en mogelijk vele andere factoren.
Als ik moest raden, zou ik zeggen dat de kosten van de JOIN
bewerkingen in optie 2 zouden kleiner zijn dan de kosten van GROUP BY
en geaggregeerde functies die nodig zijn in opties 1 en 3.
Dus ik zou verwachten dat ik optie 2 sneller zou vinden dan 1 en 3.
Om Optie 4 te meten, moet u rekening houden met meer factoren, aangezien de toepassing zich op een andere server kan bevinden, dus moet rekening worden gehouden met de belasting van de twee (db- en toepassings)servers en het aantal clients dat om deze resultaten zal vragen. .
Sidenote:je hebt GROUP BY e.ID
. nodig bij opties 1 en 3.