Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dwa takie same zapytania, różne czasy
Forum PHP.pl > Forum > Bazy danych > MySQL
e-y-e
Nie rozumiem dlaczego z pozoru dwa takie same zapytania wykonują się w tak różnym czasie

To zapytanie wykonuje się w czasie mniejszym niż sekunda i zwraca 116 idków
  1. SELECT c.id_kategorii FROM produkt c GROUP BY c.id_kategorii HAVING COUNT(c.id_kategorii)< 20;



Tego zapytania nie udało się wykonać, po 10 minutach przerwałem operację
  1. SELECT * FROM kategoria k WHERE
  2. k.id IN (SELECT c.id_kategorii FROM produkt c GROUP BY c.id_kategorii HAVING COUNT(c.id_kategorii)< 20);



To zapytanie jest takie samo jak wyżej, tylko zamiast pod zapytania z palaca są wpisane id których jest w sumie 116, i wykona się w czasie krótszym niż sekunda....
  1. SELECT * FROM kategoria k WHERE
  2. k.id IN (z palaca wpisane 116 idków);


Moje pytanie brzmi dlaczego jest taka duża różnica w czasie wykonania tego drugie zapytania skoro na moją logikę powinno ono trwać czas podzapytania + czas głównego zapytania. Co nie powinno trwać dłużej niż sekundę, a jednak trwa nieokreśloną ilość czasu.....

Dlaczego?
mmmmmmm
"Fantastyczny" sposób korzystania z podzapytań przez MySQL smile.gif
nospor
@mmmmmmmm za to Twój post jest "fantastycznym" przykładem udzielania odpowiedzi.....

@e-y-e tu ci do niczego podzapytanie nie jest potrzebne. Całość realizujesz zwykłym zapytaniem z LEFT JOIN
  1. SELECT k.* FROM kategoria k
  2. LEFT JOIN produkt c ON c.id_kategorii=k.id
  3. GROUP BY c.id_kategorii HAVING COUNT(c.id_kategorii)< 20

i już.
Sephirus
@Nospor z całym respectem jakim Cię dażę ale jaki sens ma:

  1. GROUP BY c.id_kategorii HAVING COUNT(c.id_kategorii)< 20


questionmark.gif smile.gif
nospor
@Sephirus i ja również z całym szacunkiem jaki do Ciebie mam, ale o co Tobie chodzi?

Autor chce pobrać tylko te kategorie, które nie mają więcej niż 20 produktów. Jeśli nie rozumiesz jego logiki, to pytaj się jego czemu chce pobrać tylko takie kategorie smile.gif Ja mu tylko pomagam to zrealizować.
mmmmmmm
@nospor, nie rozumiem o co ci chodzi. @e-y-e pytał dlaczego jest taka różnica i udzieliłem mu POPRAWNEJ odpowiedzi na pytanie.
nospor
Sorki, nie doczytałem końcówki smile.gif
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.