Yes, it is supposed to be slow. Why? 

 - There are multiple subqueries:
    - 3 levels of nested derived tables
    - 7 inline correlated subqueries that each join to a different table, using the `userid` which as you say is not indexed. One of the subqueries has a further nested derived table in its `FROM` clause.
 - There are `WHERE` conditios on un-indexed columns
 - There is an `ORDER BY` clause - it always adds one more operation
 - There is a `DISTINCT` quantifier - filtering out duplicates is a costly operation
 - There are some calculations being made

It really looks very bizarre. I guess it can be rewritten to a neat form using JOINs and it would run much faster. You would have to post the database structure and the result you want to achieve.