Christian Kruse: Gechwindigkeitsproblem mit Subquery bei mySQL

Beitrag lesen

你好 j0Shi,

SELECT *, cat AS subqcat, (

SELECT COUNT( subqcat )
FROM artikelliste
WHERE cat = subqcat
GROUP BY subqcat
)
FROM artikelliste

  
So, wie du das machst, muss trotzdem für jede Reihe eine Query ausgeführt werden.  
  
Ich würde daraus zwei Queries machen: eine, um die "normalen" Daten zu holen und eine, um das Zählen zu übernehmen. Etwa so:  
  
~~~sql
  
SELECT *, cat AS subqcat, FROM artikelliste  
  
-- erstelle eine Liste von subqcat  
  
SELECT cat,COUNT(*)  
FROM artikelliste  
WHERE cat IN (liste, von, subqcat)  
GROUP BY cat  

Alternativ könnte man auch gucken, ob man nicht mit LEFT JOIN oder INNER JOIN etwas hinkriegt.

Ich weiss nicht genau, inwieweit du die Daten überhaupt brauchst, aber man könnte man halt auch zusammenfassen, indem man die Subquery in das IN packt.

再见,
 克里斯蒂安

--
Bauer sucht Frau! | Ich bin ja eigentlich kein Serien-Junkie…
Treffen sich zwei Geraden. Sagt die eine: "Beim nächsten Mal gibst du einen aus."
http://wwwtech.de/