大量データのロードを高速化する方法はありますか?

csv形式等のシーケンシャルファイルから大量のデータをデータベースに登録する際、インデックスが複数定義されているクラスへのデータの投入の際に推奨されるデータ登録のテクニックがあります。

それは、データの登録の際にインデックスを生成せずに登録完了後に一括でインデックスを生成する手法です。

この手法は新規に大量のレコードを一括登録する際に最も有効な手段となります。

サンプルを添付します。

 

※但し大量のデータを追加登録する際には、既存のデータ量と新規データ量のバランスにより、この手法が有効でないケースもあります。その場合は、インデックスの再構築を範囲指定で行うことも可能です。

添付のサンプルでは

   Do ..%BuildIndices()

で全レコードに対するインデックスを再構築しています。

ここで使用している埋め込みSQL実行後に %ROWID の値でINSERTした行のID値を取得できますので、クラスリファレンス %Library.Persistent の %BuildIndices メソッドの説明にあるように、第2引数 pAutoPurge を 0に、pStartID および pEndID を適切に指定することで、INSERTしたレコードのインデックスのみ構築することもできます。


該当する製品: Caché, Ensemble, HealthShare/Caché Based, IRIS Data Platform, HealthShare/IRIS Based, IRIS for Health
関連トピック:
添付ファイル: 参考資料(zip)

アンケートにご協力をお願いします
このトピックは参考になりましたか?
このトピックに関するお問い合わせ

FAQトップに戻る