Query extrem langsam nach der Migration auf MySQL 5.7

Ich habe eine MySQL-Datenbank mit InnoDB-Tabellen, die über 10 GB Daten summieren, die ich von MySQL 5.5 auf MySQL 5.7 migrieren möchte. Und ich habe eine Frage, die ein bisschen aussieht wie:

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;

Mein Problem ist, dass diese Abfrage in MySQL 5.5 schnell, in MySQL 5.7 jedoch extrem langsam ist.

In MySQL 5.5 dauert es zunächst über 1 Sekunde und <0,001 Sekunden bei jeder wiederkehrenden Ausführung, ohne MySQL neu zu starten.
In MySQL 5.7 dauert es zuerst mehr als 11,5 Sekunden und bei jeder wiederkehrenden Ausführung 1,4 Sekunden, ohne MySQL neu zu starten.
Und je mehr LEFT JOINs ich zur Abfrage hinzufüge, desto langsamer wird die Abfrage in MySQL 5.7.

Beide Instanzen werden jetzt auf demselben Computer, auf derselben Festplatte und mit denselben my.ini-Einstellungen ausgeführt. Es ist also keine Hardware.
Die Ausführungspläne unterscheiden sich jedoch und ich weiß nicht, was ich daraus machen soll.

Dies ist EXPLAIN EXTENDED unter 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                     |

Dies ist EXPLAIN EXTENDED unter 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    |

Ich möchte verstehen, warum die MySQLs dieselbe Abfrage so unterschiedlich behandeln und wie ich MySQL 5.7 optimieren kann, um schneller zu sein.
Ich bin nicht auf der Suche nach Hilfe beim Umschreiben der Abfrage, um schneller zu sein, da ich das bereits alleine mache.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage