Witam,
mam dwie bazy danych w ramach jednego serwera, obie o takiej samej
strukturze, posiadaja podobna ilosc danych i na bazie1 zapytanie:
SELECT tmp.pesel,ew.wynik,ew.wynik_p,ew.wynik_r,o.imie,o.nazwisko
FROM _tmp_ew_wpr_lista as tmp
LEFT JOIN egzaminy_wyniki ew ON (tmp.egzamin=ew.egzamin AND
tmp.pesel=ew.pesel AND ew.studia="")
LEFT JOIN osoby o ON (tmp.pesel=o.pesel)
WHERE tmp.egzamin="EGZ_PRK_KONS"
ORDER BY tmp.pesel LIMIT 0,50;
wykonuje sie bardzo szybko a na bazie2 wolno(~30sek).
Zrobilem EXPLAIN QUERY i mam nastepujace wyniki:
baza1: http://wklej.org/id/359597/
baza2: http://wklej.org/id/359598/
Z tego co rozumiem to w przypadku bazy2 nie korzysta z indeksow.
Oto wynik SHOW INDEX dla bazy2(tabela egzaminy_wyniki, alias ew):
http://wklej.org/id/359601/
Nie jestem programista tej aplikacji, nie wiem tez gdzie szukac
problemu. Jak to moge poprawic? Jezeli potrzebne sa jeszcze jakies
informacje prosze pisac. Z gory dziekuje za pomoc.
EDIT:
ok, udalo mi sie znalesc jedna roznice: teraz w tabeli egzaminy_wyniki(alias ew) numer pesel ma dlugosc 255znakow(w starych bazach mial dlugosc 20znakow) podczasy gdy w innych tabelach ma dlugosc 32. Czy to moze byc przyczyna?