Il modo migliore per scoprirlo sarebbe fare un test, ovviamente. La risposta potrebbe essere diversa a seconda della dimensione del set di dati, del numero di diverse meta-chiavi, della loro distribuzione (tutte le entità hanno valori per tutte le meta-chiavi? o solo per alcune di esse?), delle impostazioni del tuo database server e forse molti altri fattori.
Se dovessi indovinare, direi che il costo del JOIN
le operazioni nell'opzione 2 sarebbero inferiori al costo di GROUP BY
e le funzioni aggregate necessarie nelle opzioni 1 e 3.
Quindi, mi aspetto di trovare l'opzione 2 più veloce di 1 e 3.
Per misurare l'opzione 4, dovrai considerare più fattori poiché l'applicazione potrebbe trovarsi in un altro server, quindi è necessario tenere conto del carico dei due server (db e applicazione) e del numero di client che richiederanno questi risultati .
Nota a margine:è necessario GROUP BY e.ID
nelle opzioni 1 e 3.