在mysql中连接数百个表

在mysql中连接数百个表,mysql,Mysql,在mysql中连接238个表(每个表都包含一个时间序列的变量)最有效的方法是什么。客户为我提供了一个csv文件,每个时间序列包含大约10万行。我已经在mysql中加载了数据,但到目前为止还没有索引 我曾尝试连接61个表(mysql中的最大数量),但这是一个巨大的失败。6天后,电力中断结束了它,但在此之前,我没有结果。我也尝试过更新,但也失败了 感谢您的建议在设计良好的数据库中,使用多个相同格式的表通常是个坏主意。您只需将所有数据放在一个表中,并将其用于查询。您可以使用insert或create

在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);

生成的查询应该更容易编写,性能也更好。

如果您试图连接238个表,那么您组织数据的方式可能有问题。您可以控制表结构吗?您能否将它们合并到一个表中,该表有一个额外的列标识其源文件(时间序列)?您试图实现什么?也许使用SQL数据库不是最好的方法(不管是什么),但我们只能推测。请提供表的结构,其中约3个表的小数据示例,以及您希望查询生成的输出类型示例。然后我们可以帮你组织。不幸的是我无法控制这一切。谢谢你,戈登。UNIONALL确实是一个带有转置的选项,因为我需要数据作为多变量模型的输入。这应该可以正常工作。每个查询63个表引用的限制也会影响UNION。因此,至少需要四个查询才能将所有数据加载到一个表中。很高兴认识比尔。感谢you@BillKarwin . . . 那当然是真的。我修正了答案。