Ускорение подсчета общего количества записей в Django для сайта с 20 миллионами записей MySQL

Я столкнулся с проблемой, связанной с моим Django-сайтом. Учитывая, что моя база данных содержит более 20 миллионов записей, операция подсчета общего количества данных (count) становится чрезвычайно медленной. Я использую следующие запросы:

company_count_query = f"SELECT COUNT(DISTINCT cs.OGRN) AS total_companies {company_from_clause} WHERE {company_match_condition} {email_condition} {capital_condition} {date_condition} {company_okved_condition}"

ip_count_query = f"SELECT COUNT(DISTINCT ip.OGRNIP) AS total_ips {ip_from_clause} WHERE {ip_match_condition} {imail_condition} {ip_okved_condition}"

Как я могу оптимизировать эти запросы или использовать другие методы для ускорения подсчета общего количества записей?

Спасибо за помощь!

Я попытался оптимизировать структуру запроса, добавив индексы к столбцам, по которым выполняется фильтрация, в надежде повысить производительность операции подсчета. Я ожидал, что это уменьшит время выполнения запроса и ускорит обработку данных. Однако на практике время выполнения запроса осталось высоким, а операция подсчета по-прежнему занимает слишком много времени.

Вернуться на верх