![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 3.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
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? Ten post edytował bcn 3.07.2010, 10:28:36 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
A SHOW INDEX dla bazy1?
Jakie wersje MySQL na obu serwerach? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 3.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
A SHOW INDEX dla bazy1? Jakie wersje MySQL na obu serwerach? prosze show index: http://wklej.to/KtfT mysql troche archaiczny: 5.0.24 Zauwazylem tez zmiane, teraz w egzaminy_wyniki(ew) pesel ma dlugosc 255znakow, na wczesniejszej wersji bazy mial 20znakow. Czy to moze byc przyczyna? Gdzie znalesc przyczyne dlaczego nie uzywa indeksow tylko tak 'muli' to zapytanie? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Tak, to może być przyczyna (aczkolwiek wątpię). Dla PESELu wystarczy CHAR(11) w kodowaniu ascii, tak czy inaczej zyskasz na zmianie.
Pokazałbyś jeszcze SHOW CREATE TABLE |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 3.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Tak, to może być przyczyna (aczkolwiek wątpię). Dla PESELu wystarczy CHAR(11) w kodowaniu ascii, tak czy inaczej zyskasz na zmianie. Pokazałbyś jeszcze SHOW CREATE TABLE oto show create table dla tabeli egzaminy_wyniki: baza1: http://wklej.org/id/359686/ baza2: http://wklej.org/id/359687/ co do zmian to i owszem, wiadomo, ze pesel az taki dlugi nie jest, niestety z tej bazy korzysta juz aplikacja, ktora dziala produkcyjnie, wiec takie zmiany moge zasugerowac autorom przy nastepnej rekrutacji:) Teraz musze znalezc przyczyne tych wolnych zapytan EDIT: znalazlem jeszcze inne roznice: SHOW CREATE TABLE dla tabeli _tmp_ew_wpr_lista baza1: http://wklej.org/id/359698/ baza2: http://wklej.org/id/359693/ zmienilo sie kodowanie SHOW CREATE TABLE dla tabeli osoby: baza1: http://wklej.org/id/359700/ baza2: http://wklej.org/id/359701/ rowniez roznica w dlugosci peselu oraz obie tabele maja kodowanie latin2 Ten post edytował bcn 3.07.2010, 14:17:39 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.07.2025 - 09:47 |