Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nietypowy INNER JOIN - optymalizacja
Forum PHP.pl > Forum > Bazy danych > MySQL
yarns
Witam,

mam takie oto zapytanie:
  1. SELECT
  2. *
  3. FROM
  4. tblTelefon
  5. LEFT JOIN tblBiling ON tblTelefon.MSISDN = tblBiling.MSISDN AND tblTelefon.Data_od <= tblBiling.DataPol AND tblTelefon.Data_do >= tblBiling.DataPol

W obydwu tabelach na MSISDN (int) jest ustawiony indeks. Data_od, Data_do i DataPol to pola typu timestamp. W tabelach jest odpowiednio 1100 i 1,2M rekordów zapytanie wykonuje się przez około 11-12 sekund. Jakiś pomysł jak zoptymalizować takie zapytanie i/lub strukturę danych?

Pozdrawiam
nospor
w pierwszej kolejnosci zobacz co ci pokaże EXPLAIN
yarns
Witam,

oczywiście robiłem explaina:
  1. id select_type TABLE type possible_keys KEY key_len ref rows Extra
  2. 1 SIMPLE tblTelefon ALL 1088
  3. 1 SIMPLE tblBiling ref MSISDN,DataPolaczenia MSISDN 4 raport2011.tblTelefon.MSISDN 1682


I jak widać używany jest indeks MSISDN, pytanie jak zoptymalizować pozostałą część join'a czy relacje po warunkach >= i <=



nospor
Cytat
oczywiście robiłem explaina:
Oczywiste by to i może było, gdybyś od razu w pierwszym poście podał tego EXPLAIN. Nie podałeś - wieć to nie było oczywiste. smile.gif
yevaud
sprawdzilbym iotop na serwerze. Obstawiam, ze indeksy sie w ramie nie mieszcza
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.