Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] długie zapytanie i dwa razy left join
Forum PHP.pl > Forum > Przedszkole
stanislaw
Cześć,

mam takie zapytanie:
  1. SELECT post.*, users.username, users.user_id AS users_id, users.avatar, users.pkt, users.post, users.date_register, users_field.city, users_field.footer FROM forum_posts post LEFT JOIN users ON post.user_id=users.user_id LEFT JOIN users_field ON users.user_id=users_field.user_id WHERE post.thread_id=272136 ORDER BY post.post_id ASC LIMIT 2580,20;


mam takie indeksy:
forum_posts
post_id - PRIMARY
user_id - INDEX
post_message - FULLTEXT

users
user_id - PRIMARY
username - UNIQUE

users_field
user_id - UNIQUE

Zapytanie wykonuje się ponad ponad sekundę czasami nawet kilka sekund. Na co powinienem dać jeszcze indeksy aby przyśpieszyć działanie zapytania?
Gość
dziwna sprawa bo ten sam problem mam ze zwykłym zapytaniem:
SELECT * FROM forum_posts WHERE thread_id=272136 ORDER BY post_id ASC LIMIT 2580,20;

co jest nie tak?
toffiak
Dodaj jeszcze index na thread_id, włącz profilowanie i sprawdź zapytanie za pomocą explain
stanislaw
wyniki explain:
id - 1
select_type - SIMPLE
table - forum_posts
type - ref
possible_keys - thread_id
key - thread_id
key_len - 4
ref - const
rows - 11711
Extra - Using where; Using filesort

dodałem indeks na thread_id i działa wink.gif
wielkie dzięki

P.S. na czym polega profilowanie?
toffiak
Szczegóły możesz doczytać tutaj jednak zazwyczaj wystarcza zaznaczenie opcji profilowania w phpmyadminie.
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.