Non sono un esperto in questo settore, ma ecco alcuni pensieri:
La velocità delle query richiede più tempo quando g.F2
le modifiche sono dovute alla memorizzazione nella cache. MySQL salverà i risultati per ogni query (fino a quando la cache non sarà piena), ma le nuove query vengono eseguite su una cache vuota, quindi impiegano più tempo. Non dovresti ottimizzare in base a questo. (Vedi Come misurare con precisione
)
Non posso dire dalle tue informazioni se il g
o gp
la tabella ha una maggiore specificità (sembra come gp
?) nel where
clausola, ma potresti provare invece una sottoquery. (Vedi Come forzare l'esecuzione prima della query interna
)
Per quanto riguarda la profilazione, è possibile che tu stia raggiungendo una soglia fisica come il superamento dell'allocazione della ram (l'uso dello scambio è disastroso per le prestazioni) che non sarebbe ovvio da explain
o se explain
è semplicemente sbagliato in questo caso.