¿Cómo optimiza una consulta MySQL que se une a sí misma y forma un grupo "personalizado"?

Tengo la siguiente consulta que comienza a ser lenta a medida que aumenta el tamaño de la tabla de base de datos:

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

Primero, selecciono todo de Traducciones, unido a sí mismo para obtener también el valor en inglés correspondiente.

Luego, quiero limitar mis resultados a solo uno por PropertyKey. Esto es como un grupo, excepto que necesito elegir un registro específico para que sea el que se devuelve (en lugar de la forma en que el grupo simplemente me da el primero que encuentra). Es por eso que tengo la consulta interna que solo devuelve un TranslationId.

Cuando corro explico me sale la siguiente información:

¿Hay alguna manera de que pueda devolver el mismo conjunto de resultados sin tener que hacer que MySQL use una tabla derivada más lenta? ¡Gracias!

ACTUALIZAR: He creado un Fiddle de SQL con un esquema y datos de muestra. Puedes ejecutar mi consulta por ti mismo para ver los resultados que da. Necesito poder obtener los mismos resultados, con suerte de una manera más rápida.http://sqlfiddle.com/#!2/44eb0/3/0

Respuestas a la pregunta(1)

Su respuesta a la pregunta