2

一意の値列が 1 つある Oracle テーブルに約 100,000 レコードを一括挿入します。この一括挿入は、1 日に 2 回または 3 回、何年にもわたって行われます (決して終わらない)。

一意の値列の一意の番号を生成する堅牢なメカニズムが必要です。一度にデータベースにコミットするデータセットを構築しています。

以前、私はオラクルでシーケンスを作成し、データセット行を構築し、データベースにアクセスし、新しいシーケンス番号を取得してその列に入れました。ただし、100,000 レコードの場合、100,000 データベース ヒットが必要になるため、パフォーマンスの問題が生じます。

その他の方法。この一意の値列は varchar2 で、最大長は 20 です

4

3 に答える 3

3

一括挿入のみを行う場合は、トリガーを使用して自動付番シーケンスを作成しないのはなぜですか?

于 2012-06-07T06:20:39.390 に答える
0

番号が連続している必要があることについては言及していませんでした (1..n) ので、おそらく GUID を生成してコンパクトな方法で表すことができます。長期的には競合が発生する可能性があり、その場合は新しい GUID を生成できます。

私が目にする唯一の問題は、Base64 で GUID を表すために 25 文字が必要になることです (パディングを取り除く場合は 23 文字)。

于 2012-06-07T06:31:24.713 に答える
-2

新しいシーケンスGUIDを生成し、「-」記号の代わりにその20文字を取得して、データベースに挿入できます。このGUIDはユーザーフレンドリーではないため、誰もこれを簡単に覚えることはできません。

于 2012-06-07T06:24:12.697 に答える