Nejlepší způsob, jak to zjistit, by bylo otestovat, samozřejmě. Odpověď se může lišit v závislosti na velikosti datové sady, počtu různých metaklíčů, jejich distribuci (mají všechny entity hodnoty pro všechny metaklíče? nebo jen pro několik z nich?), nastavení vaší databáze server a možná mnoho dalších faktorů.
Pokud bych měl hádat, řekl bych, že náklady na JOIN
operace v možnosti 2 by byly menší než náklady na GROUP BY
a agregační funkce potřebné v možnostech 1 a 3.
Takže bych očekával, že najdu možnost 2 rychleji než 1 a 3.
Chcete-li měřit možnost 4, budete muset vzít v úvahu více faktorů, protože aplikace může být na jiném serveru, takže je třeba vzít v úvahu zatížení dvou (db a aplikačních) serverů a počet klientů, kteří budou žádat tyto výsledky. .
Vedlejší poznámka:potřebujete GROUP BY e.ID
v možnostech 1 a 3.