Vinzenz Mai: having

Beitrag lesen

Hallo Frank,

Hallo,

wie schnell ist ein einfaches

SELECT user_id, count(*)
  FROM fotos
  GROUP BY user_id

  
Version A:  
~~~sql
SELECT  
    u.user_id,  
    u.name,  
    f.anzahl  
FROM users u  
INNER JOIN (  
    SELECT  
        user_id,  
        COUNT(user_id) AS anzahl  
    FROM fotos  
    GROUP BY user_id  
    HAVING anzahl > 5  
) f  
ON u.user_id = f.user_id

war bei mir (nicht unerwartet) deutlich schneller als

Version B:

SELECT  
    u.user_id,  
    u.name,  
    COUNT(f.id) AS anzahl  
FROM users u  
INNER JOIN fotos f  
ON u.user_id = f.user_id  
GROUP BY  
    u.user_id,  
    u.name  
HAVING anzahl > 5

Testdaten: 200 User, alle über 5 Fotos, 500.000 Fotos
Ausführungszeiten im Bereich von 2 Sekunden (A) zu 0,3 Sekunden (B).

Freundliche Grüße

Vinzenz