問題タブ [insert]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
155 参照

sql - SELECTの結果を取得してVALUES句にフィードすることは可能ですか?

たとえば、次のようなことを行う方法はありますか?

0 投票する
4 に答える
2995 参照

c# - C#で一括挿入ステートメントを生成する最良の方法は?

私はたくさんの同様のレコードをテーブルに挿入する必要があり、これを行うための良い/簡単な方法があるかどうか疑問に思いました。

大きな弦を作るのは簡単だと思いますが、もっと優雅な方法を見つけられるといいなと思っていました。

0 投票する
12 に答える
951681 参照

mysql - 「INSERT IGNORE」と「INSERT ... ON DUPLICATE KEY UPDATE」

多くの行を含むステートメントを実行しているINSERTときに、失敗の原因となる重複エントリをスキップしたいと考えています。いくつかの調査の後、私のオプションは次のいずれかを使用するようです。

  • ON DUPLICATE KEY UPDATEこれは、何らかのコストで不要な更新を意味する、または
  • INSERT IGNORE予告なしに滑り込む他の種類の失敗への招待を意味します。

私はこれらの仮定で正しいですか?重複を引き起こす可能性のある行を単純にスキップして、他の行に進む最善の方法は何ですか?

0 投票する
5 に答える
16744 参照

sql - MySQLを使用して、値が別のテーブルに存在しないという条件でテーブルに挿入するにはどうすればよいですか?

MySQLデータベースがあり、挿入している特定の値が別のテーブルの値と一致しないと仮定して、1つのテーブルにいくつかの値を挿入したいと思います。

簡略化された/例の構造は次のとおりです。

'name'が'donotinvite'テーブルの'name'と単一のステートメントで一致しないと仮定して、'name'と'message'のペアを'invites'テーブルに条件付きで挿入することは可能ですか?

このようなもの、おそらく?

0 投票する
6 に答える
4650 参照

oracle - 間違った方法で Oracle に挿入する - どのように対処すればよいですか?

次のコードを見つけました。

PK のシーケンスを作成できますが、それを使用しない既存のコード (クラシック asp、このプロジェクトの一部ではない既存の asp.net アプリ) がたくさんあります。

私はそれを無視するべきですか、それとも既存のコードに入らずに修正する方法はありますか?

私は最善の選択肢はただ行うことだと考えています:

オプション?

0 投票する
5 に答える
2102 参照

java - java.util.Map/Set での挿入速度の最適化

項目の順序を指定して、java.util.Collection への挿入速度を最適化する方法はありますか?

例えば

この解決策は次のとおりです。

これよりも速くなりますか (順不同) ?

(そして、他のコレクションについても同じ質問: HashMap、hastable...)

ありがとう

0 投票する
3 に答える
6562 参照

database - オブジェクトが存在しない場合にのみ、休止状態を使用してデータベースにオブジェクトを挿入する

主キーとして user_id を持つマップされた User オブジェクトと、一意の制約を持つメール列があるとします。ユーザー オブジェクトが存在しない場合にのみ、ユーザー オブジェクトをユーザー テーブルに保存するプログラムが必要です。

挿入関数で次のことができます。

  1. 取引開始
  2. 指定されたメールを持つユーザーのクエリ
  3. 存在しない場合は、新しいユーザーを作成し、セッションを使用して保存します
  4. 失敗した場合はコミットまたはロールバック

2 つの問題があります。

  1. 2 つのクエリを実行するのはコストがかかります。プレーン SQL を使用していた場合は、「INSERT IGNORE」構文を使用する可能性がありますが、私の場合は休止状態の保存メソッドを使用し、最後に User オブジェクトを保持したいと考えています。それに対する解決策はありますか?
  2. 同時実行。アプリケーションの 2 つのインスタンスが同時に実行される可能性はありますか? どちらも同じ「mail」パラメータで「addUser」関数を使用します。1 つ目はフェーズ 2 を通過し、そのメールを持つユーザーを見つけられません。最初のインスタンスがまだユーザーを保存してコミットしていないため、2 番目のインスタンスもユーザーを見つけることなくフェーズ 2 を通過します。次に、最初のインスタンスがユーザーを保存してコミットし、その後、2 番目のインスタンスがユーザーを保存してコミットします。このユーザーには、最初のインスタンスのメールと同じメールが含まれます。もちろん、制約のために失敗します。何か不足していますか?

私が正しい場合、どうすればよいですか:

  1. それが起こらないことを願っています。
  2. トランザクションの開始時に、ユーザー テーブルを読み取りおよび書き込み用にロックします。
  3. 関数に try...except を追加すると、一意の制約例外が除外されます。例外がスローされた場合は、メールに従ってデータベースからユーザーを選択するだけです。
  4. 他の解決策...
0 投票する
7 に答える
4090 参照

performance - テーブルに多くのレコード (400K) がある場合、空の場合と比較して、挿入は 4 倍遅くなります。

(データベース: Oracle 10G R2)

100,000 レコードをテーブルに挿入するのに 1 分かかります。ただし、テーブルに既にいくつかのレコード (400K) が含まれている場合は、4 分 12 秒かかります。また、CPU 待機が急増し、「Free Buffer Waits」が非常に高くなります (dbconsole から)。

ここで何が起こっているか知っていますか?これは、テーブルのエクステントが頻繁に発生するためですか? これらのテーブルのエクステント サイズは 1,048,576 バイトです。DB がテーブル ストレージを拡張しようとしているような気がします。

私はこれについて本当に混乱しています。だから、どんな助けも素晴らしいでしょう!


これは挿入ステートメントです。


ここでのdstat出力 (CPU、IO、MEMORY、NET):

  1. 空のテーブルの挿入: http://pastebin.com/f40f50dbb
  2. 400K レコードのテーブル: http://pastebin.com/f48d8ebc7

からの出力v$buffer_pool_statistics


アップデート

このテーブルからインデックスを削除したところ、100K を 600K レコード テーブルに挿入してもパフォーマンスが大幅に向上しました (CPU 待機なしで 47 秒かかりました - dstat の出力http://pastebin.com/fbaccb10を参照)。