Cómo coloque en
http://www.clubdelphi.com/foros/showthread.php?t=93348, usa el query planner, que es el que te dice que es lo que hace la BD.
Hay mucho que resalta en tu query. De entrada, el que no estes usando campos fecha para las comparaciones.
RIGTH() no se puede optimizar con indices.
Este tipo de consulta se beneficia bastante con el uso de las funciones WINDOW
https://www.brentozar.com/sql-syntax...es-sql-server/
Hay que buscar en reducir esos join, y poner los datos mas secuenciales. Si pones un ejemplo con DATOS, quizás en
http://sqlfiddle.com te puedo echar una mano.
P.D: Y no dices que significa "ineficiente"