使用union-all优化查询3个数据库

xfb7svmp  于 2021-06-18  发布在  Mysql
关注(0)|答案(0)|浏览(236)

我有一个mysql查询,如下所示,需要在3个不同的数据库(db1、db2和db3)上运行,并查询3个数据库中完全相同的2个表databases: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))
            )

如前所述,我使用union all为3个不同的数据库运行上述查询。
问题是,这些表中的每个表都包含4000万到8000万行的数据,执行上述查询大约需要1.5个小时。
我不确定是否有办法进一步优化上述查询,即使查询中使用的列都已编制索引。
任何帮助都将不胜感激。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题