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

Estoy ejecutando una consulta de MySQL a través de un script PHP de línea de comandos (consulta preparada utilizando PDO en el controlador mysqlnd). Es una consulta simple con una sola combinación a la izquierda, que devuelve 100 filas y 7 columnas pequeñas por fila.

Cuando ejecuto esta consulta en la CLI de MySQL (en la misma máquina que ejecuta el script PHP en cuestión), tarda 0,10 segundos, incluso con el indicador SQL_NO_CACHE activado.

Cuando ejecuto esta consulta, preparada, a través de PDO, toma más de 9 segundos. Esto es ejecutar ()solamente - sin incluir el tiempo que toma la llamada a buscar.

Un ejemplo de mi consulta:

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
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;

No creo que la consulta tenga la culpa, teniendo en cuenta que cada cliente MySQL nativo que he intentado lo ha ejecutado casi al instante, pero aquí está el EXPLICACIÓN para las patadas:

+----+-------------+-------+--------+-------------------------+------------+---------+-----------------------------------+------+-------------+
| id | select_type | table | type   | possible_keys           | key        | key_len | ref                               | rows | Extra       |
+----+-------------+-------+--------+-------------------------+------------+---------+-----------------------------------+------+-------------+
|  1 | SIMPLE      | al    | index  | created_on,last_updated | created_on | 8       | NULL                              |  100 | Using where |
|  1 | SIMPLE      | pp    | eq_ref | PRIMARY                 | PRIMARY    | 4       | ActionAPI.al.publisher_product_id |    1 |             |
+----+-------------+-------+--------+-------------------------+------------+---------+-----------------------------------+------+-------------+
2 rows in set (0.00 sec)

¿Qué diablos está haciendo la DOP que está tomando 8.9 segundos?

EDITAR: Como se indica en los comentarios, también he escrito una versión mysql_query de esto, y tiene el mismo rendimiento deficiente. Sin embargo, al eliminar parte de la cláusula WHERE, se ejecuta tan rápido como el cliente MySQL. Siga leyendo para detalles alucinantes.

Respuestas a la pregunta(4)

Su respuesta a la pregunta