sql查询优化UNION ALL

mysql 像这种查询语句 有没有办法在进行优化 现在查有点慢


SELECT
    id,
    NAME,
    sex 
FROM
    (
    SELECT
        a.id AS id,
        a.NAME AS NAME,
        a.sex AS sex 
    FROM
        USER us
        INNER JOIN roes rs ON us.id = rs.id 
    WHERE
        us.aa = 0 UNION ALL
    SELECT
        b.id AS id,
        b.NAME AS NAME,
        b.sex AS sex 
    FROM
        cbd b
        INNER JOIN roes rs ON b.id = rs.id 
    WHERE
        b.aa = 0 UNION ALL
    SELECT
        c.id AS id,
        c.NAME AS NAME,
        c.sex AS sex 
    FROM
        school sc
        INNER JOIN roes rs ON sc.id = rs.id 
    WHERE
    sc.aa = 0 
    ) a;

既然本来就是3次单独的查询合并在一起,你这union all本身已经没有任何可以优化的地方了
查询慢就加索引啊

看下执行计划,表有没有加索引等问题,如果还是很慢,数据时效性不是很高的话可以创建视图去查询数据,然后查询的时候查询视图就行,或者采用临时表等中间查询方法

1、可以使用union过滤一部分重复的数据。
2、使用查询计划,优化查询,添加索引等。

这都是些简单查询 加下索引就行了。 不用特别优化啥了