Mariadb-managing-duplicates
MariaDB-重複の管理
MariaDBは、以前のレッスンで説明したように、状況によってはレコードとテーブルの重複を許可します。 これらの重複の一部は、個別のデータまたはオブジェクトタイプのため、または操作オブジェクトの一意の寿命またはストレージの結果として、実際には重複ではありません。 これらの複製も通常は問題ありません。
状況によっては、重複が問題を引き起こし、暗黙のアクションまたはMariaDBコマンドの緩やかなポリシーが原因で表示されることがよくあります。 この問題を制御し、重複を見つけ、重複を削除し、重複の作成を防ぐ方法があります。
戦略とツール
重複を管理する4つの重要な方法があります-
- JOINで魚を捕まえ、一時テーブルでそれらを削除します。
- INSERT … ON DUPLICATE KEY UPDATEを使用して、重複の検出時に更新します。
- DISTINCTを使用して、SELECTステートメントの結果を整理し、重複を削除します。
- INSERT IGNOREを使用して、重複の挿入を停止します。
一時テーブルでの結合の使用
内部結合のような半結合を実行し、一時テーブルで見つかった重複を削除します。
INSERTを使用する
INSERT … ON DUPLICATE KEY UPDATEが重複する一意キーまたは主キーを検出すると、更新を実行します。 複数の一意のキーが検出されると、最初のキーのみが更新されます。 したがって、複数の一意のインデックスを持つテーブルでは使用しないでください。
次の例を確認します。これは、入力されたフィールドへの挿入時にインデックス値を含むテーブルで何が起こるかを明らかにします-
注意-キーが見つからない場合、INSERT … ON DUPLICATE KEY UPDATEステートメントは通常の挿入ステートメントと同様に実行されます。
DISTINCTを使用する
DISTINCT句は、結果から重複を削除します。 DISTINCT句の一般的な構文は次のとおりです-
注-DISTINCT句を含むステートメントの結果-
- 1つの式を使用すると、一意の値が返されます。
- 複数の式を使用すると、一意の組み合わせが返されます。
- NULL値は無視されません。したがって、結果には一意の値としてNULLも含まれます。
単一の式のDISTINCT句を使用して、次のステートメントを確認します-
複数の式を使用して次の例を確認します-
INSERT IGNOREの使用
INSERT IGNOREステートメントは、重複レコードの検出時に挿入をキャンセルするようMariaDBに指示します。 以下に指定されたその使用例を確認します-
また、重複の背後にあるロジックに注意してください。 一部のテーブルでは、そのテーブルデータの性質に基づいて複製が必要です。 重複レコードを管理するための戦略にそのニーズに対応します。