如何将大量列添加到 H2 中预先存在的 table?

How to add a very large number of columns to a pre-existing table in H2?

我正在尝试在具有 2880 到 14,400 列的 table 上测试 H2 的性能。我知道这在设计方面非常值得怀疑,但我只想 运行 性能测试来测量如此巨大 table 上的实际响应时间。我正在考虑的另一种方法是只添加额外的行并以这种方式存储额外的信息。

我将如何生成数千个具有不同名称的新列。因为当您执行 ALTER TABLE table_name ADD column_name datatype; 语句时,我不相信 column_name 实际上可以是通过循环构建的连接字符串,可以吗?

谢谢。

你可以使用像

这样的东西
EXECUTE IMMEDIATE 'ALTER TABLE table_name ADD ('
    || (SELECT LISTAGG(' C' || X || ' INTEGER') FROM SYSTEM_RANGE(1, 1000))
    || ')';

注意:仅在 H2 1.4.200 中引入了对此命令的支持。

另请注意,与许多其他查询一样,H2 在大多数情况下会读取完整的行(只有某些查询可以从索引中读取所有必需的值)。这意味着当你只需要很少的列时会有很大的开销。