Mysql - запрос к 3 базам данных с использованием union all - оптимизация

У меня есть запрос MySQL, как показано ниже, который необходимо запустить в 3 разных базах данных (db1, db2 и db3) и запросить 2 таблицы, которые точно такие же в трех базах данных: sales_order_item и sales_order_item

(
                SELECT
                    COUNT(DISTINCT soi.fk_sales_order) AS total_sales
                 FROM
                    db1.sales_order_item soi
                left join db1.sales_order_item_status sois 
                    ON soi.fk_sales_order_item_status = sois.id_sales_order_item_status
                WHERE
                    sois.name NOT IN ('invalid', 'test_invalid', 'new', 'placed', 'exchange_return_pending', 'exportable')
                AND DATE(date_add(created_at, INTERVAL 04 HOUR)) = DATE(date_add(CURRENT_TIMESTAMP, INTERVAL 04 HOUR))
            )

Я выполняю вышеуказанный запрос, используя объединить все для трех разных баз данных, как уже упоминалось.

Проблема в том, что каждая из таблиц содержит данные в диапазоне от 40 до 80 миллионов строк, а выполнение вышеуказанного запроса занимает около 1,5 часов.

Я не уверен, есть ли способ дальнейшей оптимизации вышеуказанного запроса, даже если все столбцы, которые используются в запросе, проиндексированы.

Любая помощь будет принята с благодарностью.

Выполнение left join вернет все строки таблицы db1.sales_order_item_status. В результате вы получите отчетливое количество в таблице db1.sales_order_item_status, отфильтрованное с учетом заданных вами условий where. Это то, что вам нужно?

Arihant 25.09.2018 16:18
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
1
32
0

Другие вопросы по теме