..
と"正しいクエリ管理が安定的かつ効率的な実装の前提条件であることはよく知られています。
この記事ではあまり知られていないが、非常に強力な構文を提示する、私は、DUPLICATE KEY UPDATE句の話している。
この句はINSERTステートメントの実行中に使用されると、その目的は確認することですされ、挿入する前に、そこに主キー(主キー)または一意キー(UNIQUE KEY)の複製であり、これはエンジンが起こる場合un'UPDATE MySQLは代わりに挿入されます。
この句の利点は明白です:あなたは、 パフォーマンスとコードのクリーンアップの面でも長所ではなく、2つの単一のクエリを記述します。
の例をとってみましょう。 我々のサイトに訪問者のロギングを実行する簡単なスクリプトを作成するとします。 :私たちのDBのテーブル構造を以下に
構文のINSERTのおかげで... ON DUPLICATE KEY UPDATEを... ...我々は、単一のクエリと同じ結果を得ることができます。
ip_visitatori値にINSERT('123 .123.123.123'、1、NOW()) KEY DPLICATE ON UPDATE numero_visite numero_visite = + 1、ultima_visita = NOW();このように、IPが包含が行われている場合、そうでなければ、影響を受けたレコードの単純な更新を実行します。 この構文を使用すると、30%に相当するパフォーマンスの面で利益を得ることができます。
問題の条項の"少しの想像力と創意工夫で様々な状況で非常に有用がある場合もあります。
例えば、我々は、条件と組み合わせて使用することができます。
ここでは例です:次のような構造の仮想的なオンラインオークションサイトのテーブルがあるとします。
VALUES(1、120)INSERT INTOを提供しています KEY DPLICATE ON UPDATE migliore_offerta = IF(VALUES(migliore_offerta)<120、120、VALUES(migliore_offerta))我々は一つに解決し、単純なクエリを介して一挙に落ちた... そうでなければ我々は資源の結果として廃棄物(およびエラーのリスクが大きい)でいくつかのクエリを使用する必要がありました。
| |
MS Accessの(上級)
迅速かつ簡単にデータベースを作成および管理する方法を学びます。 29€から開始。 |
| |
MySQLの(コース)
オープンソースのデータベースの管理。 39€から。 |
| |
SQLとデータベース(コース)
リレーショナルデータベースを作成および管理。 39€から。 |