在mysql中,连接238个表(每个表都包含一个时间序列中的变量)的最有效方法是什么。客户机为我提供了一个csv文件,每个时间序列包含大约10万行。我已经在mysql中加载了数据,但是直到现在还没有索引。
我试过加入61个表(mysql中的最大数量),但那是一个巨大的失败。6天后,一次断电结束了它,但直到那时我才有结果。我也尝试过更新,但也失败了
谢谢你的建议
最佳答案
在设计良好的数据库中,拥有多个相同格式的表通常是一个坏主意。您只需将所有数据放在一个表中,并将其用于查询。您可以使用insert
或create table as
语句执行此操作:
create table AllSeries as
select 'series001' as SeriesName, s.* from series1 s union all
select 'series002' as SeriesName, s.* from series2 s union all
. . .
select 'series0060' as SeriesName, s.* from series1 s;
insert into AllSeries
select 'series061' as SeriesName, s.* from series1 s union all
select 'series062' as SeriesName, s.* from series2 s union all
. . .
select 'series119' as SeriesName, s.* from series1 s;
/* and so on */
然后,应该向表中添加索引以提高性能,可能类似于:
create index idx_AllSeries_SeriesName_Time on AllSeries(SeriesName, Time);
您得到的查询应该更容易编写和执行。