Jak zoptymalizować zapytanie MySQL, które łączy się w sobie i wykonuje grupę „niestandardową”?

Mam następujące zapytanie, które zaczyna się spowalniać wraz ze wzrostem rozmiaru tabeli DB:

SELECT  
    t.*, 
    e.TranslatedValue AS EnglishValue
FROM (
    SELECT DISTINCT PropertyKey 
    FROM Translations
) grouper
JOIN Translations t 
    ON t.TranslationId = (
        SELECT TranslationId 
        FROM Translations gt
        WHERE gt.PropertyKey = grouper.PropertyKey 
            AND gt.Locale = 'es' 
            AND gt.Priority = 3
        ORDER BY gt.ModifiedDate DESC 
        LIMIT 1
    )
INNER JOIN Translations e 
    ON t.EnglishTranslationId = e.TranslationId 
ORDER BY t.ReviewerValidated, PropertyKey

Najpierw wybieram wszystko z Tłumaczenia, łączę się z sobą, aby uzyskać również odpowiednią wartość angielską.

Następnie chcę ograniczyć moje wyniki do tylko jednego na klucz PropertyKey. To jest jak grupa, z wyjątkiem tego, że muszę wybrać konkretny rekord, który ma zostać zwrócony (zamiast sposobu, w jaki grupa obok daje mi pierwszy znaleziony). Dlatego mam wewnętrzne zapytanie, które po prostu zwraca jeden TranslationId.

Po uruchomieniu wyjaśnienia otrzymuję następujące informacje:

Czy istnieje sposób na zwrócenie tego samego zestawu wyników bez konieczności używania wolniejszej tabeli MySQL? Dzięki!

AKTUALIZACJA: Utworzyłem narzędzie SQL Fiddle ze schematem i przykładowymi danymi. Możesz uruchomić moje zapytanie, aby zobaczyć wyniki, które daje. Muszę być w stanie uzyskać te same wyniki, miejmy nadzieję, w szybszy sposób.http://sqlfiddle.com/#!2/44eb0/3/0

questionAnswers(1)

yourAnswerToTheQuestion