
Proste zapytanie, typu:
SELECT dane.*, user.* FROM dane LEFT JOIN user ON ( user.id = dane.userid ) ORDER BY dane.DATA LIMIT 50
przy poprawnie założonych indexach wykonuje się bardzo szybko.
Czasem jednak pojawia się konieczność posortowania takiego wyniku po danych z tabeli łączonej, np. w tym przykładzie, po nazwisku usera.
I wtedy okazuje się, że żaden index nie chce pomóc, bo pobierane są wszystkie dane z "dane", wtedy wykonywane jest złączenie i dopiero wtedy - wykonywane jest sortowanie i limit.
(zakładając że w "dane" są setki tyś rekordów takie rozwiązanie jest naprawdę bardzo kosztowne :/ )
Czy jesteście w stanie zaproponować jakiekolwiek sposób na optymalizację takiego zapytania?