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、使用查询计划,优化查询,添加索引等。
这都是些简单查询 加下索引就行了。 不用特别优化啥了