Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: łaczenie tabel a explain
Forum PHP.pl > Forum > Bazy danych > MySQL
hostingekspert
Witam,

mam sobie pewne zapytanie, zapytanie laczy sie z wieloma tabelami:

http://paste.ofcode.org/vQZM7Ffk4dg7b2WuCpUUKi

w tym z tabela users, ktora ma 10tsy uzytkownikow

jak zrobie EXPLAIN dla tego zapytania mam nastepujacy wynik:

http://awesomescreenshot.com/0664u4tkef

Dlaczego przy tabeli "u" pokazuje 10128 rows?

dodam ze cale zapytanie dla roznych przekazanych uzytkownikow odpala sie srednio 8-11sec ALE jak wywale

  1. u.id_facebook, u.id_user, u.name, u.email, u.gps

  1. LEFT JOIN users u ON m.id_sender = u.id_user


całość spada do 0.5sec.

Jak rozwiazac problem łączenia z tabela users i skad w explain tak duze wartosci dla tabeli users?
Pyton_000
na obu polach masz klucz? (m.id_sender,, u.id_user)questionmark.gif
hostingekspert
Tzn? oba pola zawsze sa wypelnione
Pyton_000
Czy masz pozakładane indeksy na te pola
hostingekspert
indeksy mam nastepujace:

  1. ALTER TABLE `invitations`
  2. ADD PRIMARY KEY (`id_invitation`), ADD KEY `id_sender_idx` (`id_sender`), ADD KEY `id_category_idx` (`id_category`), ADD KEY `id_user_category_idx` (`id_user_category`), ADD KEY `id_subcategory_idx` (`id_subcategory`), ADD KEY `id_user_subcategory_idx` (`id_user_subcategory`);
  3.  
  4.  
  5. ALTER TABLE `invitations_deleted`
  6. ADD PRIMARY KEY (`id_invitation_delete`), ADD KEY `id_user_idx` (`id_user`), ADD KEY `id_invitation_idx` (`id_invitation`);
  7.  
  8. ALTER TABLE `invitation_recipients`
  9. ADD PRIMARY KEY (`id_invitation_recipient`), ADD KEY `id_recipient_idx` (`id_recipient`), ADD KEY `id_invitation_idx` (`id_invitation`);
Pyton_000
Ale nie widzę klucza na id_users w users
hostingekspert
jak odpalam

  1. SELECT u.id_user, u.name, u.id_facebook, u.email, u.gps FROM users u WHERE id_user IN (SELECT id_friend FROM friends_relations WHERE id_user = 2)


w EXPLAIN takze mam

  1. PRIMARY u ALL NULL NULL NULL NULL 10047 USING WHERE
  2. DEPENDENT SUBQUERY friends_relations index_subquery id_user_idx,friends_relations_id_friend_users_id_u... friends_relations_id_friend_users_id_user 9 func 4 USING WHERE


a wiec "skanuje" cala tabele uzytkownikow?
sazian
ALTER TABLE `users` ADD INDEX ( `id_user` ) ;
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.