select a,b,c,d from ae left join ap on ae.anomaly_process_id = ap.id join af on ae.anomaly_file_id = af.id or ap.anomaly_file_id = af.id join p on ae.product_id = p.id join d on d.id = ae.device_id join dv on dv.product_id = ae.product_id join mv on dv.management_view_id = mv.id join dvr on dv.id = dvr.device_view_id join au on dv.user_id = au.id join t on t.id = au.tenant_id union all select a,b,c,d from ae left join ap on ae.anomaly_process_id = ap.id join af on ae.anomaly_file_id = af.id or ap.anomaly_file_id = af.id join p on ae.product_id = p.id join d on d.id = ae.device_id join dv on dv.product_id = ae.product_id join au on dv.user_id = au.id join t on t.id = au.tenant_id
每个子查询单独查询速度很快,但是用了 union all 之后速度慢到需要几十秒,数据也就十几万条,请教一下到底从哪里开始优化比较好?是更改表的数据结构减少 join 还是在业务数据库中分开查询两次做合并