Como você otimiza uma consulta MySQL que se une a si mesma e faz um grupo “customizado”?

Eu tenho a seguinte consulta que está começando a ficar lenta conforme aumenta o tamanho da tabela do banco de dados:

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

Primeiro, estou selecionando tudo de Traduções, junto com ele para obter o valor de inglês correspondente também.

Então, quero limitar meus resultados a apenas um por PropertyKey. Isso é como um grupo, exceto que eu preciso escolher um registro específico para ser o retornado (em vez de o grupo apenas me fornecer o primeiro que encontrar). É por isso que tenho a consulta interna que apenas retorna um TranslationId.

Quando eu executo explico recebo as seguintes informações:

Existe uma maneira de retornar o mesmo conjunto de resultados sem precisar que o MySQL use uma tabela derivada mais lenta? Obrigado!

ATUALIZAR: Eu criei um SQL Fiddle com um esquema e dados de amostra. Você pode executar minha consulta para ver os resultados. Eu preciso ser capaz de obter os mesmos resultados, espero que de uma maneira mais rápida.http://sqlfiddle.com/#!2/44eb0/3/0

questionAnswers(1)

yourAnswerToTheQuestion