优化sql UNION查询

时间:2017-05-15 12:19:06

标签: mysql sql performance merge union

我有三个"主要"表(让他们称之为tb1_1,tb2_1和tb3_1)包含输入(信息和索引)数据和包含这些索引值的其他表。 然后,我有一堆视图来处理表中的数据,最终的输出视图是链接到excel进行进一步处理的视图。 当我请求更新数据(视图)时,最多需要10秒才能取回手。到目前为止一切都很好。

现在,问题出现了问题":我被要求添加更多" main"来自不同来源的数据。我不是一个SQL专家,所以这就是我到目前为止所做的:

我创建了三个新的" main"表:tb1_2,tb2_2和tb3_2。他们紧挨着我的另一个" main"表

DROP TABLE IF EXISTS tb1_2;
CREATE TABLE tb1_2 (
    id bigint(20),
    data1 bigint(20),
    data2 date,
    data3 varchar(64),
    ...
);

由于新表的索引与旧表的索引重叠,我创建了一个视图,其中包含这些新表的UNION以及索引超过10000的旧表的内容。所以我现在: view1,view2,view3(然后是两个表的" merge"):

DROP VIEW IF EXISTS view1;
CREATE VIEW view1 AS
SELECT  id, data1, data2, ... FROM tb1_2
UNION ALL
SELECT  id, data1, data2, ... FROM tb1_1
WHERE id >= 10000;

然后,在我的查询中生成处理数据的视图,我将view1替换为tb1_1,view2替换tb1_2,view3替换tb1_3

这一切都很好,我在最后的观点中得到了新的"数据被添加到" old"数据。 但是,需要5分钟才能恢复数据,而不是之前的10秒。

知道如何改善周期时间/性能吗?

非常感谢!

0 个答案:

没有答案