#ruby-on-rails
#ruby-on-rails
Вопрос:
У меня есть следующий запрос, чтобы узнать общее количество отсчетов.
SELECT count(*)
FROM contacts_lists
JOIN plain_contacts
ON contacts_lists.contact_id = plain_contacts.contact_id
JOIN contacts
ON contacts.id = plain_contacts.contact_id
WHERE plain_contacts.has_email
AND NOT contacts.email_bad
AND NOT contacts.email_unsub
AND contacts_lists.list_id = 45897
Для выполнения этой задачи требуется 150 мс.
Есть ли какой-либо другой способ выполнить приведенный выше запрос?
Есть ли какой-нибудь способ сократить время? возможно ли это? пожалуйста, скажите мне……………………………….
Комментарии:
1. Есть ли у вас индексы для полей внешнего ключа (различных
contact_id
)? Уcontacts_lists.list_id
поля есть индекс?
Ответ №1:
Создавали ли вы индексы ( add_index
при миграции) в своих contact_id
столбцах? Также, возможно, было бы лучше использовать
JOIN contacts ON contacts.id = contacts_lists.contact_id
# instead of: JOIN contacts ON contacts.id = plain_contacts.contact_id