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

Prestazioni semplici delle sottoquery MySQL

Nella prima query mysql dovrebbe selezionare un sottoinsieme da mdl_enrol tabella e completa mdl_user_enrolments e mdl_userdata nella memoria. Quindi selezioni molti dati in memoria. Dopo averlo fatto, unisci i dati. Se non c'è memoria sufficiente per inserire tutti i dati fino a quando non vengono uniti e rispediti al client, viene creata una tabella temporanea sul disco rigido. Molto probabilmente l'ottimizzatore mysql non è abbastanza interessante per correggere il tuo errore e provare a migliorare il piano di esecuzione. Ecco perché è lento.

Mentre per la seconda query mysql sa esattamente cosa deve selezionare e seleziona solo la piccola quantità di dati richiesti. In questo scenario è possibile utilizzare gli indici (supponendo che siano stati creati tutti gli indici necessari). Quindi è veloce.