Nejsem v této oblasti odborník, ale zde je několik myšlenek:
Rychlost dotazu trvá déle, když g.F2
změny jsou způsobeny ukládáním do mezipaměti. MySQL uloží výsledky pro každý dotaz (dokud se cache nezaplní), ale nové dotazy se spouštějí na prázdnou cache, takže to trvá déle. Na základě toho byste neměli optimalizovat. (Viz Jak na to přesně měřit
)
Z vašich informací nemohu určit, zda g
nebo gp
tabulka má větší specifičnost (vypadá jako gp
?) v where
klauzule, ale možná budete chtít místo toho zkusit poddotaz. (Viz Jak vynutit provedení vnitřního dotazu jako první
)
Pokud jde o profilování, je možné, že narazíte na fyzický práh, jako je překročení alokace ram (použití swapu je pro výkon katastrofální), což by nebylo zřejmé z explain
, nebo zda explain
je v tomto případě prostě špatně.