ORDER BY datetime hace que la consulta sea muy lenta

Estoy intentando extraer datos de varias tablas y cuando utilizo ORDER BY en un campo datetime, devuelvo los resultados después de al menos 10 segundos, pero si hago la misma consulta sin ORDER BY, devuelvo los resultados por menos de 2 segundos.

Esta es mi consulta actual

SELECT
ph.call_subject AS callSubject,
ac.account_name AS accountName,
DATE_FORMAT(ph.trigger_on, "%c/%e/%Y %h:%i %p") AS triggerOn,
ind.name AS industry,
cc.call_code_name AS callCode
FROM phone_calls AS ph
INNER JOIN accounts AS ac ON ph.account_id = ac.account_id
INNER JOIN industries AS ind ON ind.industry_id = ac.industry_id
INNER JOIN call_codes AS cc ON ph.call_code_id = cc.call_code_id
WHERE ac.status = 1 AND ph.status = 1 AND ph.owner_id = 1 AND ac.do_not_call = 0
AND ph.trigger_on BETWEEN '2012-11-19 00:00:00' AND '2013-03-19 23:59:59'
ORDER BY ph.trigger_on ASC LIMIT 0,1000

los siguientes campos son todos del tipo INT (11) NO FIRMADOS

ph.account_id
ac.account_id
ind.industry_id
ac.industry_id
ph.call_code_id
cc.call_code_id
ph.owner_id

Los siguientes campos son todos del tipo tinyint (1)

ac.status 
ph.status
ac.do_not_call

este campo es un tipo de fecha y hora

ph.trigger_on

Tenga en cuenta que tiene registros de 300K y phone_calls tiene 5 millones de registros. ¿Qué puedo hacer para realizar este PEDIDO POR más rápido? tenga en cuenta que todos los campos de mis cláusulas where, todas mis cláusulas ON y ph.trigger_on están indexados. y estoy usando el motor de almacenamiento InnoDB no MyIsam.

Gracias

Respuestas a la pregunta(5)

Su respuesta a la pregunta