NULL vs NOT NULL -- Usa NOT NULL a meno che tu non abbia un motivo commerciale per NULL .
Usa InnoDB con la relativa PRIMARY KEY su ogni tavolo. Probabilmente sarà più veloce.
"Usare l'indice", dove ha senso, aiuterà alcuni.
product.categoryid = 4871 non appartiene al ON clausola per vendorimport; spostalo in un WHERE clausola. (Questo non accelererà le cose.)
La tua query non può essere ulteriormente ottimizzata:deve fai tutti i JOIN e consegna tutte le righe.
Ma... Vuoi davvero 3917 righe di output? Puoi gestire questa cosa? Forse ne vuoi solo alcuni e potresti filtrarli durante il SELECT? Ciò potrebbe velocizzare le cose.