我有一个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个小时。
我不确定是否有办法进一步优化上述查询,即使查询中使用的列都已编制索引。
任何帮助都将不胜感激。
暂无答案!
目前还没有任何答案,快来回答吧!