MonetDB create 100.000 columns

MonetDB create 100.000 columns

本文关键字:columns create MonetDB      更新时间:2023-10-16

我正在尝试创建一个 MonetDB 数据库,该数据库应包含 100k 列和大约 2M 行的 smallint 类型。

为了生成 100k 列,我使用的是 C 代码,即执行以下 sql 请求的循环:

ALTER TABLE test ADD COLUMN s%d SMALLINT;

其中 %d 是从 1 到 100000 的数字。

我观察到在 80000 个 sql 请求之后,每个事务大约需要 15 秒,这意味着我需要很多时间来完成表的创建。

你能告诉我是否有一种简单的方法来创建 100k 列吗?

另外,你知道MonetDB到底发生了什么吗?

你应该只使用一个创建表

在脚本外壳 (bash) 中:

#!/bin/bash
fic="/tmp/100k.sql"

col=1
echo "CREATE TABLE bigcol (" > $fic
while [[ $col -lt 100000 ]]
do
    echo "field$col SMALLINT," >> $fic
    col=$(($col + 1))
done
echo "field$col SMALLINT);" >> $fic

在命令行中:

sh 100k.sh
mclient yourbdd < /tmp/100k.sql

等待大约 2 分钟:D

mclient yourbdd
> d bigcol
[ ... ... ...]
    "field99997"  SMALLINT,
    "field99998"  SMALLINT,
    "field99999"  SMALLINT,
    "field100000" SMALLINT
);

掉落表大哥反对非常非常长。我不知道为什么。

我也认为这不是一个好主意,但它回答了你的问题。

皮尔