Почему база данных mysql иногда висит?
Без предоставления конфигурации БД, что там у вас, какие настройки, что за тип движка хранилища, какие диски и что еще рядом крутится - это взывание к телепатам.
На быстродействие БД может повлиять все из вышеперечисленных. 
Есть ли настройка в конфигурации БД, чтобы она логировала медленные запросы?
Что говорит EXPLAIN по данному запросу?
Возможна ли ситуация, когда данный запрос выполняется разными пользователями?
Сколько подключений разрешено к БД?
1. надо смотреть сам запрос
2.В цикле происходит 5-6 моментальных запросов, это важно.
запросы выстраиваются в очередь и выполняются по очереди, если ваш подзапрос использует таблицу в которой что то изменяется, то он будет ждать пока предыдущий запрос ее изменит