consulta extremadamente lenta después de la migración a mysql 5.7

Tengo una base de datos MySQL con tablas InnoDB que suman más de 10 diez GB de datos que quiero migrar de MySQL 5.5 a MySQL 5.7. Y tengo una consulta que se parece un poco a:

SELECT dates.date, count(mySub2.myColumn1), sum(mySub2.myColumn2)
FROM (
    SELECT date
    FROM dates -- just a table containing all possible dates next 5 years
    WHERE date BETWEEN '2016-06-01' AND '2016-09-03'
) AS dates
LEFT JOIN (
    SELECT o.id, time_start, time_end
    FROM order AS o
    INNER JOIN order_items AS oi on oi.order_id = o.id
    WHERE time_start BETWEEN '2016-06-01' AND '2016-09-03'
) AS mySub1 ON dates.date >= mySub1.time_start AND dates.date < mySub1.time_end
LEFT JOIN (
    SELECT o.id, time_start, time_end
    FROM order AS o
    INNER JOIN order_items AS oi on oi.order_id = o.id
    WHERE o.shop_id = 50 AND time_start BETWEEN '2016-06-01' AND '2016-09-03'
) AS mySub2 ON dates.date >= mySub2.time_start AND dates.date < mySub2.time_end
GROUP BY dates.date;

Mi problema es que esta consulta se está ejecutando rápidamente en MySQL 5.5 pero extremadamente lenta en MySQL 5.7.

En MySQL 5.5, toma más de 1 segundo al principio y <0.001 segundos cada ejecución recurrente sin reiniciar MySQL.
En MySQL 5.7 tarda más de 11.5 segundos al principio y 1.4 segundos en cada ejecución recurrente sin reiniciar MySQL.
Y cuanto más IZQUIERDA UNE a la consulta, más lenta se vuelve la consulta en MySQL 5.7.

Ambas instancias ahora se ejecutan en la misma máquina, en el mismo disco duro y con la misma configuración de my.ini. Entonces no es hardware.
Sin embargo, los planes de ejecución son diferentes y no sé qué hacer con ellos.

Este es el EXPLICAR EXTENDIDO en MySQL 5.5:

| id | select_type | table      | type  | possible_keys | key         | key_len | ref       | rows  | filtered | extra                           |
|----|-------------|------------|-------|---------------|-------------|---------|-----------|-------|----------|---------------------------------|
| 1  | PRIMARY     | dates      | ALL   |               |             |         |           | 95    | 100.00   | Using temporary; Using filesort |
| 1  | PRIMARY     | <derived2> | ALL   |               |             |         |           | 281   | 100.00   | ''                              |
| 1  | PRIMARY     | <derived3> | ALL   |               |             |         |           | 100   | 100.00   | ''                              |
| 3  | DERIVED     | o          | ref   | xxxxxx        | shop_id_fk  | 4       | ''        | 1736  | 100.00   | ''                              |
| 3  | DERIVED     | oc         | ref   | xxxxx         | order_id_fk | 4       | myDb.o.id | 1     | 100.00   | Using index                     |
| 2  | DERIVED     | o          | range | xxxx          | date_start  | 3       |           | 17938 | 100.00   | Using where                     |
| 2  | DERIVED     | oc         | ref   | xxx           | order_id_fk | 4       | myDb.o.id | 1     | 100.00   | Using where                     |

Este es el EXPLICAR EXTENDIDO en MySQL 5.7:

| id | select_type | table | type   | possible_keys | key         | key_len | ref              | rows | filtered | extra          |
|----|-------------|-------|--------|---------------|-------------|---------|------------------|------|----------|----------------|
| 1  | SIMPLE      | dates | ALL    |               |             |         |                  | 95   | 100.00   | Using filesort |
| 1  | SIMPLE      | oi    | ref    | xxxxxx        | order_id_fk | 4       | const            | 228  | 100.00   |                |
| 1  | SIMPLE      | o     | eq_ref | xxxxx         | PRIMARY     | 4       | myDb.oi.order_id | 1    | 100.00   | Using where    |
| 1  | SIMPLE      | o     | ref    | xxxx          | shop_id_fk  | 4       | const            | 65   | 100.00   | Using where    |
| 1  | SIMPLE      | oi    | ref    | xxx           | order_id_fk | 4       | myDb.o.id        | 1    | 100.00   | Using where    |

Quiero entender por qué los MySQL tratan la misma consulta de manera tan diferente, y cómo puedo ajustar MySQL 5.7 para que sea más rápido.
No estoy buscando ayuda para reescribir la consulta para que sea más rápida, ya que eso es algo que ya estoy haciendo por mi cuenta.

Respuestas a la pregunta(2)

Su respuesta a la pregunta