Extremly Slow SQL query with subquery and "HAVING"

Viewed 134

I have this query where I want to count how many entries in "user" have multiple entries in "usernames"

SELECT usernames.NAME,
    COUNT(user.id)
FROM user
INNER JOIN user_username ON user.id = user_username.user_id
INNER JOIN usernames ON user_username.user_username_id = usernames.id
WHERE 
    user.datecreated BETWEEN '2016-01-01' AND '2016-09-01'
    AND user.id IN 
        (
            SELECT user_id
            FROM user_username
            GROUP BY user_id
            HAVING COUNT(*) > 1
        )
GROUP BY usernames.NAME
ORDER BY user.id DESC

The query works, but is too slow, any ideas what I could do to speed up this query?

2 Answers
Related