Ik doe dit type zoekopdracht op de volgende manier:
SELECT COUNT(DISTINCT t1.userid) AS user_count
FROM TRANSACTIONS t1
JOIN TRANSACTIONS t2 USING (userid)
WHERE t1.product_id = 'prod1'
AND t2.product_id = 'prod2';
De GROUP BY
oplossing weergegeven
door @najmeddine levert ook het gewenste antwoord op, maar het presteert niet zo goed op MySQL. MySQL heeft moeite met het optimaliseren van GROUP BY
vragen.
Probeer beide zoekopdrachten en analyseer de optimalisatie met EXPLAIN
, en voer ook enkele tests uit en time de resultaten gezien de hoeveelheid gegevens in uw database.