Najlepszym sposobem, aby się tego dowiedzieć, byłoby oczywiście przetestowanie. Odpowiedź może być różna w zależności od rozmiaru zbioru danych, liczby różnych meta-kluczy, ich rozmieszczenia (czy wszystkie podmioty mają wartości dla wszystkich meta-kluczy? czy tylko dla kilku z nich?), ustawień Twojej bazy danych serwer i prawdopodobnie wiele innych czynników.
Gdybym miał zgadywać, powiedziałbym, że koszt JOIN
operacje w opcji 2 byłyby mniejsze niż koszt GROUP BY
oraz funkcje agregujące potrzebne w opcjach 1 i 3.
Spodziewam się więc, że znajdę opcję 2 szybciej niż 1 i 3.
Aby zmierzyć opcję 4, musisz wziąć pod uwagę więcej czynników, ponieważ aplikacja może znajdować się na innym serwerze, więc należy wziąć pod uwagę obciążenie dwóch serwerów (bazy danych i aplikacji) oraz liczbę klientów, którzy będą żądać tych wyników .
Uwaga dodatkowa:potrzebujesz GROUP BY e.ID
w opcjach 1 i 3.