Mysql
 sql >> Database >  >> RDS >> Mysql

Clausola WHERE sull'unione che aggiunge 4 secondi al tempo di esecuzione

La spiegazione più probabile è che MySQL stia scegliendo un piano di esecuzione diverso quando aggiungi quel predicato.

Puoi confrontare l'output EXPLAIN delle due query, quella con journey_day.day=3 predicato e quello senza.

Immagino che MySQL stia scegliendo un ordine di unione diverso e MySQL stia optando per utilizzare un indice con day come colonna iniziale quando il predicato è incluso. E probabilmente questo sta causando l'accesso e l'esame di molte più righe, o forse MySQL sta generando un ampio set intermedio prima di filtrare le righe.