Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Optymalizacja MYSQL
Forum PHP.pl > Forum > Przedszkole
miccom
  1. SELECT * FROM dane WHERE urlop=0 AND (etat=0 OR (etat=1 AND id_usera= '.$user_id.' ) ) AND mapa IN ( SELECT mapa FROM dane WHERE miejscowosc ='. $miejscowosc_usera.' UNION SELECT miejscowosc FROM wojewodztwa WHERE miejscowosc ='. $miejscowosc_usera.' GROUP BY miejscowosc )


Witam.
Po analizie kodu wychodzi na to, że powyższe zapytanie ( przy około 2500 rekordów w tabeli dane i 20 rekordów tabeli wojewodztwa ) zajmuje jakąś sekundę.
Może to niewiele, ale jednak, a strach pomyśleć jak będzie wyglądało zapytanie przy większej ilości rekordów.

Czy macie jakieś propozycje, jak zoptymalizować takie zapytanie?

Pozdrawiam i proszę o pomoc.

luke18dg
Jezus to po pierwsze. Co chciałbyś osiągnąć? Opis teoretyczny po co tworzysz takie skomplikowane zapytania?
miccom
Ok, mam dwie tabele.
Chcę wyciągnąć z jednej tabeli rekordy spełniające wskazane warunki...
Jak inaczej mam to opisać?

W jednej tabeli mam dane userów, w drugiej ich miasta.
I chcę wyciągnąć wszystkich userów, który są w "pracy" ( urlop=0) gdzie user nie ma przydzielonego etatu lub ( dane usera przeglądającego który ma etat) który dodatkowo znajduje się w danej miejscowości na delegacji, oczywiście pogrupowane wg miejscowości.
fragov
  1. SELECT * FROM `users` JOIN `citites` ON `users`.`city_id` = `cities`.`id` WHERE ... GROUP BY `cities`

W where'a wrzucasz co chcesz i gotowe.
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.