A melhor maneira de descobrir seria testar, é claro. A resposta pode ser diferente dependendo do tamanho do conjunto de dados, do número de meta-chaves diferentes, sua distribuição (todas as entidades têm valores para todas as meta-chaves? ou apenas para algumas delas?), as configurações do seu banco de dados servidor e possivelmente muitos outros fatores.
Se eu fosse adivinhar, diria que o custo do
JOIN
as operações na opção 2 seriam menores que o custo de GROUP BY
e agregar funções necessárias nas opções 1 e 3. Então, eu esperaria encontrar a Opção 2 mais rápido que 1 e 3.
Para medir a Opção 4, você terá que considerar mais fatores, pois o aplicativo pode estar em outro servidor, portanto, as cargas dos dois servidores (db e aplicativo) e o número de clientes que solicitarão esses resultados devem ser levados em consideração .
Nota lateral:você precisa de
GROUP BY e.ID
nas opções 1 e 3.