La meilleure façon de le savoir serait de tester, bien sûr. La réponse peut être différente selon la taille du jeu de données, le nombre de méta-clés différentes, leur répartition (toutes les entités ont-elles des valeurs pour toutes les méta-clés ? ou seulement pour quelques-unes d'entre elles ?), les paramètres de votre base de données serveur et éventuellement de nombreux autres facteurs.
Si je devais deviner, je dirais que le coût du JOIN
les opérations dans l'option 2 seraient inférieures au coût de GROUP BY
et agréger les fonctions nécessaires dans les options 1 et 3.
Donc, je m'attendrais à trouver l'option 2 plus rapidement que 1 et 3.
Pour mesurer l'option 4, vous devrez tenir compte de plusieurs facteurs car l'application peut se trouver sur un autre serveur, de sorte que les charges des deux serveurs (base de données et application) et le nombre de clients qui demanderont ces résultats doivent être pris en compte. .
Sidenote :vous avez besoin de GROUP BY e.ID
dans les options 1 et 3.