Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]długo wykonujące się podzapytanie
jacusek
post
Post #1





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witam.
Mam dwie table
gdzie w tabeli klient jest:
id_kli
nazwisko

w tab transakcje mam:
id_pra
id_kli
data

próbuję zrobić podzapytanie, które pomoże wyciągnąć nazwiska klientów, które powtarzają się więcej niż raz w tab transakcje:

wymyśliłem coś takiego
  1. SELECT nazwisko
  2. FROM klienci JOIN transakcje USING(id_kli)
  3. WHERE id_kli IN
  4. (SELECT id_kli FROM transakcje
  5. GROUP BY id_kli
  6. HAVING count(id_kli)>1)
  7. GROUP BY id_kli

Pytanie generalnie działa, pokazuje mi co chcę, żeby pokazywał, ale niestety wykonuje się około 25 s.
Gdzie może tkwić błąd?
Dodam, że obie tabele są innoDB i obie mają założony index

PROBLEM ROZWIĄZANY
No właśnie, choć troszkę na okrętkę i nie jestem do końca zadowolony. Stworzyłem z podzapytania widok, odpowiednio zmodyfikowałem zapytanie i działa bezproblemowo.

Ten post edytował jacusek 18.07.2011, 13:19:45
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A co EXPLAIN pokazuje?
Go to the top of the page
+Quote Post
jacusek
post
Post #3





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


explain pokazuje coś takiego

"id";"select_type";"table";"type";"possible_keys";"key";"key_len";"ref";"rows";"Extra"
"1";"PRIMARY";"klienci";"ALL";NULL;NULL;NULL;NULL;"6504";"Using where"
"2";"DEPENDENT SUBQUERY";"transakcje";"index";NULL;"id_kli";"4";NULL;"1";"Using index"

ale szczerze mówić nie wiem jak to interpretować.

Udało mi się to rozwiązać w nastepujący sposób:
  1. SELECT nazwisko FROM
  2. (SELECT id_kli FROM transakcje GROUP BY id_kli HAVING count(id_kli)>1) AS t1 JOIN klienci USING(id_kli)


Ten post edytował jacusek 18.07.2011, 20:08:18
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 17:11