Проблема, скорее всего, связана с запросом.
Несколько замечаний.
Вы делаете несколько объединений в одни и те же таблицы для разных полей
Если бы вы делали это за одно объединение, а не просмотр всей таблицы, то поиск был бы более эффективным
Например,
LEFT JOIN UserContacts UC ON UC.UserID = P.CreatedUserID
AND UC.UserID = P.CustomerID
LEFT JOIN Contacts CT ON CT.ContactID = UC.ContactID
AND CT.ContactID = UC.ContactID
Также заметил, что P.CustomerId = UserID? Это действительные отношения? так как это сделало бы 2 соединения с таблицей UserContacts и таблицей периодических изданий в том же поле. Вы можете уйти только с 1 присоединением
LEFT JOIN UserContacts URC ON P.CustomerID = URC.UserID
Возможно, вы также возвращаете дополнительные таблицы данных в соединении без причины вывода, например, почему UserRepresentCompanies в запросе? Вы не выбираете данные из него или не используете предложение where.