Jag är ingen expert på det här området, men här är några tankar:
Frågehastigheten tar längre tid när g.F2
ändringar beror på caching. MySQL kommer att spara resultaten för varje fråga (tills cachen är full), men nya frågor körs på en tom cache, så de tar längre tid. Du bör inte optimera utifrån detta. (Se Hur man mäta noggrant
)
Jag kan inte avgöra från din information om g
eller gp
tabellen har större specificitet (verkar som gp
?) i where
klausul, men du kanske vill prova en underfråga istället. (Se Så här tvingar du den inre frågan att köras först
)
När det gäller profilering, är det möjligt att du når en fysisk tröskel som att överskrida ram-tilldelning (att använda swap är katastrofalt för prestanda) som inte skulle vara uppenbart från explain
, eller om explain
är bara fel i det här fallet.