Почему запрос к mysql внутри цикла while выполняется очень долго?
Время получения 40000+ записей из таблицы offers = 0.2s
Вот такой код отрабатывается за 4s
то есть в цикле делается 40тыс запросов к таблице clients каждый из который выполняется за 0.0001 sec

вам точно надо прочитать про JOIN'ы чтобы одним запросом получить все нужные данные
https://www.w3schools.com/sql/sql_join.asp
Запросы в цикле надо избегать! Иногда бывает, что это трудно сделать, но в вашем случае выглядит легко как уже написал nokimaro используйте JOIN. Примерно так:
SELECT c.id, o.* FROM clients AS c JOIN offers AS o ON c.id = o.clientID WHERE <и тут условия по которым выбираете clients>.
PS. o.* - это плохо, перечисляйте те поля которые вам нужны для работы.
Вот тут хорошая статья про JOIN