Den bedste måde at finde ud af det på ville selvfølgelig være at teste. Svaret kan være forskelligt afhængigt af datasættets størrelse, antallet af forskellige meta-nøgler, deres fordeling (har alle entiteter værdier for alle meta-nøgler? eller kun for nogle få af dem?), indstillingerne for din database server og muligvis mange andre faktorer.
Hvis jeg skulle gætte, ville jeg sige, at prisen på JOIN
operationer i mulighed 2 ville være mindre end prisen på GROUP BY
og aggregerede funktioner, der er nødvendige i valgmulighed 1 og 3.
Så jeg ville forvente at finde mulighed 2 hurtigere end 1 og 3.
For at måle mulighed 4 skal du overveje flere faktorer, da applikationen kan være på en anden server, så belastningen af de to (db og applikations) servere og antallet af klienter, der vil anmode om disse resultater, skal tages i betragtning .
Sidenote:du skal bruge GROUP BY e.ID
i valgmulighed 1 og 3.