Consulta con demasiados left join
Que tal?. Estoy haciendo una consulta para recuperar datos de 3 tablas, es de un sistema de chat medio sensillo. Tengo 4 tablas Usuarios(id,usuario...) Conversaciones(Id,User1,User2,IdPublicacion) premensaje(Id, IdPropietario, IdMensaje, IdConversacion) mensajes (Id, IdEnvia, Fecha, Texto, Leido). Lo que necesito es recuperar todos los id de las conversaciones de un determinado usuario que puede estar en user1 o user2, el id de publicacion de esa conversacion, los nombres de user1 y user2 y la cantidad de mensajes no leidos. Para eso hago uso de left join. La consulta funciona correctamente y devuelve todos los valores que necesito mi duda es la siguiente: es eficiente esta consulta o alentara mucho el servidor cuando este tenga muchos datos. Esta es la consulta:
SELECT
conversaciones.Id, conversaciones.IdPublicacion, conversaciones.User1, conversaciones.User2, Usuario1.Usuario as Nombre1, Usuario2.Usuario as Nombre2, COUNT(mensajes.Id) as Cantidad
FROM
conversaciones
LEFT JOIN
usuarios Usuario1 ON conversaciones.User1 = Usuario1.Id
LEFT JOIN
usuarios Usuario2 ON conversaciones.User2 = Usuario2.Id
LEFT JOIN
premensajes
ON
conversaciones.Id = premensajes.IdConversacion AND premensajes.IdPropietario = '17'
LEFT JOIN
mensajes
ON
mensajes.Id = premensajes.IdMensaje AND mensajes.Leido = '1' AND mensajes.IdEnvia <> '17'
WHERE
conversaciones.User1 = '17' OR conversaciones.User2 = '17' GROUP BY conversaciones.Id;