既存のテーブルのデータを別のテーブルにINSERTするときは、以下のようにINSERT…SELECT文を使用することがあります。

例)t1テーブルをSELECTした結果をt2テーブルにINSERTする場合


列指向型のデータベースであるInfiniDBは、INSERT処理は汎用的な行指向のデータベースに比べて得意ではありません(相対的に処理に時間がかかります)。
そのため、InfiniDBでこのような処理を高速化したい場合は、InfiniDBのロードツールであるcpimportとSELECTを組み合わせる方法を検討してください。




例)SELECT * FROM t1 WHERE….の検索結果をt2テーブルに挿入(ロード)する場合


InfiniDBに付属しているバルクロードツール「cpimport」はcsvやバイナリデータを高速にロードすることができます。これを応用して、上記のようにSELECTした結果をLinuxのパイプ「|」でcpimportに渡すことで、cpimportはそのSELECT結果を通常のロード処理と同じようにロードします。

InfiniDBは元々SELECT処理は得意なので、INSERT….SELECT文を実行してもSELECTの部分は高速に処理することができます。苦手であるINSERTの部分をcpimportで補うことで、他テーブルのデータ挿入(ロード)も高速に行うことができます。