Cita: la pregunta es existe alguna forma de optimizar dicha consulta.
Por lo pronto, creando in INDEX sobre ese campo.
La pregunta que cabe es si está bien definido...
¿Es un DATE o DATETIME, no?
Por otro lado, no existe el GETDIA() en MySQL, por lo que no sé qué es lo que hace, ni donde lo definiste.
Además, no te recomiendo usar CASE para una opcion po relse simple:
Código MySQL:
Ver original cas.id,
cas.tipo,
socio,
cliente,
usu.nombre ,
cas.monto,
IF(cas.especial
= 0, eta.descripcion
, esp.descripcion
) descripcion
, getdia(2,cas.id, etapa, especial) dia
LEFT JOIN especiales esp
ON esp.etapa
=cas.especial
LEFT JOIN normales eta
ON eta.etapa
= cas.etapa
AND cas.tipo
=eta.tipo