データのmysqlを挿入すると、一部のアプリケーションは、IGNORE挿入し、DUPLICATE KEY UPDATEでは、MySQLに置き換えるに無視挿入し、他の要約に置き換えています

 

ターン:

いくつかの操作は、MySQLインサート遅延場合、IGNORE、ON DUPLICATE KEY UPDATE差

仕上げzccst

DELAYED、使用

遅延インサートを使用して

調整されたオペレータを使用し、INSERTステートメントをREPLACEさDELAYED。動作は、キューにDELAYED挿入し、サーバのデータ列に到達すると、クライアントは、データが実際に記録シートに挿入されるまで動作し続けることができるように、すぐに、クライアントにステータス情報を返しました。読み取りデータがデータテーブルから読み込まれた場合はこれまでのところ、読者がなくなるまで、キュー内のデータは、保持されます。次いで、サーバは、キュー内のデータの遅延データ行(遅延列)の行を挿入することから始まります。挿入操作が、サーバーは、新しい読み取り要求と到着を待っているがあるかどうかをチェックします。その場合、遅延線データキューは、操作が読み取りを継続することができ、中断されました。ときに、サーバーが再び遅延行を挿入開始時に読んでいない人。キューがこれまでに空になるまで、このプロセスは継続します。

いくつかの注意事項に:
・INSERT DELAYEDは、INSERT文のために使用されるべき値のリストを指定します。DELAYED INSERT DELAYED ... SELECT文のためのサーバを無視します。
DUPLICATE UPDATE文に遅れINSERTでは無視サーバが... DELAYED。
・フロント行が挿入されているので、文はすぐに戻りますので、あなたはAUTO_INCREMENT値を取得するためにLAST_INSERT_ID()を使用することはできません。AUTO_INCREMENT値は、ステートメントによって生成することができます。
行が実際にこれまでに挿入されるまで、•SELECT文の場合、DELAYED行は表示されません。
・スレーブレプリケーションサーバに遅延遅延なしプライマリサーバがスレーブサーバ上の同じデータではないではありませんので、無視されます。

彼らはこれまでにテーブルに挿入されるまで、キュー内の各ラインは、現在唯一のメモリに格納されていることに注意してください。これは、あなたは、mysqldを中止することを余儀なくされている場合ことを意味します(例えば、キルを使用して-9)、またはmysqldが予期せず停止した場合、すべての行がディスクに書き込まれていない失われます。



二、使用がIGNORE

標準SQLに対するMySQLの拡張であるIGNORE。新しいテーブル内の重複キーがある場合はSTRICTモードの後に警告が起動されたとき、または、ALTER TABLEは、制御動作をIGNORE使用しています。あなたがIGNORE指定しない場合、重複キーエラーが発生した場合、コピーは、前のステップに戻る中止されます。IGNOREが指定されている場合、行が重複するキーワード、最初の行だけを持っているため、その後、紛争の他の行が削除されます。そして、エラー値に正しい値に、それはのように近づけるように補正します。

(...)TBに無視した値を挿入しない (...を)

ので、そこにあるかどうかをチェックしませんし、そこは無視され、何の追加



使用してDUPLICATE KEY UPDATE ON、3を
バージョン4.1は、DUPLICATE KEY ON ... INSERTを支える始めてからMySQLをUPDATE構文は、作るすでに完成した文に減少3つのSQL文(SELECT、INSERT、UPDATE)を、実行する必要があります。

例えばipstatsテーブル構造は次のように
参照が
表ipstats(CREATE
  IP VARCHAR(15)NOT NULL UNIQUE、
  クリック数SMALLINT(5)UNSIGNED NOT NULL DEFAULTを'0'。
);

それ以外の場合は3つのSQL文を実行する必要があり、次のように:

IF(ipstats FROM SELECT * WHERE = IP '192.168.0.1')は{
UPDATEは、SETをipstats 1クリック=クリック+ IP = WHERE '192.168.0.1';
} {他
ipstats(IP、クリック数)値にINSERT(「192.168.0.1を'1);
}

今ちょうど完了するためのSQL文の下に:

INSERT INTOは、VALUES(ipstats' 192.168.0.1」、1)ON KEY DUPLICATE UPDATEのクリック数=クリック数+ 1;

この文のことに注意し、テーブルが一意のインデックスまたは主キーを持たなければならないことを条件とします。

MySQLは> I(。UNIQUE IDはint、int型COの)表を作成し、
MySQLは>(2,1)、I値(1,1)。INSERT INTO; 。。MySQL
は> = COの重複キーを更新COのON値に(1,1)IをINSERT + +1;
MySQLの> SELECT * Iから;
+ ------ + ------ +
。| ID | COさん|
+ ------ + ------ +
| 1 | 2 |。
| 2 | 1 |
+ ------ + ------ +

//私たちは上のi値(1,1)への挿入を実行した場合 、重複キーの更新共同=共同+ 1; 結果は次のとおりです。
私からのMySQL> SELECT *;
+ ------ + ------ +
|上記IDは| CO |
+ ------ + ------ +
| 1 | 3 |
| 2 | 1 |
+ ------ + ------ +

//試験しますID主キーは、UNIQUEをするときなども可能であるとき、
I(ID INT AUTO_INCREMENTプライマリキー、CO INT)表を作成し、

第四に、3の違い
などに迅速に挿入DELAYEDは、それが挿入のパフォーマンスを向上させ、失敗非常に心配ではありません。

該当するレコードの主キーを持つ唯一の懸念を無視しない存在しない、何も追加し、そこに無視されます。

操作、注意非プライマリキー列を追加するときDUPLICATE KEY UPDATE ON、無視の違いに注意してください。何のアドオンがありません指定された列を更新します。

 

----------------------

ターン:

MySQLに無視挿入、などの要約など、いくつかの用途に置き換えます

MySQLの三つの形式に置き換えます。

1. tbl_nameを(COL_NAME、...)値に置き換えます(...)

2. tbl_name内に置き換える(COL_NAME、...)を選択し...

3. tbl_name内の設定COL_NAME =値に置き換え、...

 

無視1.insert

そのような重複データのようなエラーが発生したときのように挿入データが、エラーを返さない場合、それだけで警告として返します。だから、それ以外の場合は無視されます、それ自体が問題ではない文を無視し使用してください。例えば:

INSERTは図書(名)VALUES INTO IGNORE( 'MySQLのマニュアル')

2.on重複キーの更新

プライマリまたは一意反復更新ステートメントが実行されると、説明したように後の更新は、ID = ID、機能と同様に不要な文であるが、エラーを無視することはできません。例えば、反復可能な名前のデータ挿入が与えられていないと達成するために、ステートメントで使用することができます。

重複KEY UPDATEのID = IDに図書(名)VALUES( 'MySQLのマニュアル')。INSERT INTO

3.insert ... SELECT ...どこに存在していません

選択を挿入するかどうかを判定するための条件は、唯一の一次およびUNIQUEによって決まるだけでなく、他の条件を通ることができます。例えば:

図書INTO(名前)を挿入EXISTS、NOT WHEREデュアルから 'MySQLのマニュアル'(ID = 1冊からIDを選択)

4.replaceへ

同じプライマリまたは一意のレコードが存在する場合、最初に削除されました。次に、新しいレコードを挿入します。

本は本から、 'MySQLのマニュアル' 1 SELECT INTO REPLACE

MySQLの三つの形式に置き換えます。

1. tbl_nameを(COL_NAME、...)値に置き換えます(...)

2. tbl_name内に置き換える(COL_NAME、...)を選択し...

3. tbl_name内の設定COL_NAME =値に置き換え、...

 

無視1.insert

そのような重複データのようなエラーが発生したときのように挿入データが、エラーを返さない場合、それだけで警告として返します。だから、それ以外の場合は無視されます、それ自体が問題ではない文を無視し使用してください。例えば:

INSERTは図書(名)VALUES INTO IGNORE( 'MySQLのマニュアル')

2.on重複キーの更新

プライマリまたは一意反復更新ステートメントが実行されると、説明したように後の更新は、ID = ID、機能と同様に不要な文であるが、エラーを無視することはできません。例えば、反復可能な名前のデータ挿入が与えられていないと達成するために、ステートメントで使用することができます。

重複KEY UPDATEのID = IDに図書(名)VALUES( 'MySQLのマニュアル')。INSERT INTO

3.insert ... SELECT ...どこに存在していません

選択を挿入するかどうかを判定するための条件は、唯一の一次およびUNIQUEによって決まるだけでなく、他の条件を通ることができます。例えば:

図書INTO(名前)を挿入EXISTS、NOT WHEREデュアルから 'MySQLのマニュアル'(ID = 1冊からIDを選択)

4.replaceへ

同じプライマリまたは一意のレコードが存在する場合、最初に削除されました。次に、新しいレコードを挿入します。

本は本から、 'MySQLのマニュアル' 1 SELECT INTO REPLACE

おすすめ

転載: www.cnblogs.com/libin6505/p/11390327.html