Най-добрият начин да разберете е да тествате, разбира се. Отговорът може да бъде различен в зависимост от размера на набора от данни, броя на различните мета-ключове, тяхното разпределение (всички обекти имат ли стойности за всички мета-ключове? или само за няколко от тях?), настройките на вашата база данни сървър и вероятно много други фактори.
Ако трябваше да гадая, бих казал, че цената на JOIN
операциите във вариант 2 биха били по-малки от цената на GROUP BY
и агрегатни функции, необходими в опции 1 и 3.
Така че очаквам да намеря опция 2 по-бързо от 1 и 3.
За да измерите опция 4, ще трябва да вземете предвид повече фактори, тъй като приложението може да е в друг сървър, така че натоварването на двата сървъра (db и приложението) и броят на клиентите, които ще поискат тези резултати, трябва да бъдат взети под внимание .
Странична бележка:имате нужда от GROUP BY e.ID
в опции 1 и 3.