sql >> Base de Datos >  >> RDS >> Mysql

PHP tarda 90 veces más en ejecutar la consulta que el cliente MySQL

Dando una actualización muy tardía sobre esta pregunta:

No he encontrado la causa, pero resulta que EXPLAIN era diferente en PHP que en la CLI. No estoy seguro de si algún aspecto de la conexión haría que MySQL decidiera usar un campo diferente para el índice, porque hasta donde yo sé, esas cosas no deberían estar relacionadas; pero, por desgracia, EXPLAIN de PHP mostró que no se estaba utilizando el índice adecuado, mientras que CLI sí lo hizo.

La solución en este (desconcertante) caso es usar índice de sugerencias . Vea la línea 'FROM' en esta consulta modificada de mi ejemplo:

SELECT HEX(al.uuid) hexUUID, al.created_on,
    IFNULL(al.state, 'ON') actionType, pp.publishers_id publisher_id,
    pp.products_id product_id, al.action_id, al.last_updated
FROM ActionAPI.actionLists al USE INDEX (created_on)
LEFT JOIN ActionAPI.publishers_products pp
    ON al.publisher_product_id = pp.id
WHERE (al.test IS NULL OR al.test = 0)
    AND (al.created_on >= :since OR al.last_updated >= :since)
ORDER BY created_on ASC
LIMIT :skip, 100;

¡Espero que esto ayude a alguien!