序文: 残業の理由は、オンラインにアクセスして、オンライン データベース内の重複データの問題を解決するためです。プログラムに オンライン ライブラリの 6 つのテーブルに重複データがあり、そのうち 2 つは比較的大きく、1 つは 960,000 を超え、もう 1 つは 300,000 を超えています。以前にも同じ問題を扱ったことがあるため、前回の うーん、でも効率が低すぎて、1 秒あたり 1 個、重複データが約 20,000 個以上、推定時間は約 8 時間です。 。 。 自分で考えずに、先人のものを盲目的に頼るのは問題です!なぜ以前はうまくいったのに、なぜ今はうまくいかないのかといつも疑問に思うのも問題です。最近、自分の状態が悪く、探求したり知識を求めたりする意欲を失っていることに気づきました。今日は私にとって目覚めの時であり、ようやく正しい道に戻れたような気がします。 さて、本題に戻りましょう。重複排除の手順については、以下で詳しく説明します。 1. 問題を発見するテーブル「動物」を作成します( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) デフォルト NULL, `age` int(11) デフォルト NULL, 主キー (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 デフォルト CHARSET=utf8 COLLATE=utf8_bin; `pilipa_dds`.`student` (`id`, `name`, `age`) に VALUES ('1', 'cat', '12') を挿入します。 `pilipa_dds`.`student` (`id`, `name`, `age`) に VALUES ('2', 'dog', '13') を挿入します。 `pilipa_dds`.`student` (`id`, `name`, `age`) に VALUES ('3', 'camel', '25') を挿入します。 `pilipa_dds`.`student` (`id`, `name`, `age`) に VALUES ('4', 'cat', '32') を挿入します。 `pilipa_dds`.`student` (`id`, `name`, `age`) VALUES ('5', 'dog', '42') に INSERT INTO します。 目標:同じ まず、どのデータが繰り返されているかを確認します。 名前、カウント(1)を選択 から 学生 グループ化 名前 持つ カウント(1) > 1; 出力:
繰り返しフィールドがあるテーブルから*を選択(Count(1)>1を持つ繰り返しフィールドでテーブルグループから繰り返しフィールドを選択) 2.重複データを残さずにすべて削除する直接削除するとエラーが発生します。 消去 から 学生 どこ 名前 ( 名前を選択 から 学生 グループ化 名前 持つ カウント(1) > 1) エラー: 1093 - FROM 句で更新のターゲット テーブル 'student' を指定できません。時間: 0.016000 秒 その理由は、このテーブルを更新している間にこのテーブルがクエリされ、このテーブルをクエリしている間にこのテーブルが再度更新されるため、デッドロックが発生するからです。 MySQL では、同じテーブルを更新してクエリするこの操作はサポートされていません。 解決策:更新するデータの列をサードパーティ テーブルとしてクエリし、フィルター処理して更新します。 消去 から 学生 どこ 名前 ( 選択 t.名前 から ( 学生から名前を選択 GROUP BY NAME HAVING count( 1 ) > 1 ) t) 3. 削除テーブルから重複データを削除し、1つだけ残す削除する前に、削除する重複データの種類を確認できます。 選択 * から 学生 どこ id が ( 選択 t.id から ( SELECT MIN( id ) AS id FROM student GROUP BY `name` ) t ) これは何を意味するのでしょうか? まず、 4.重複データを削除し、1つだけ残すとても簡単です。select 消去 から 学生 どこ id が ( 選択 t.id から ( SELECT MIN( id ) AS id FROM student GROUP BY `name` ) t ) 900,000 件以上のレコードを含むテーブルの実行は超高速です。 これで、 以下もご興味があるかもしれません:
|
<<: VMware 構成 VMnet8 ネットワーク方法の手順
>>: レスポンシブWebデザイン学習(3) - モバイルデバイスでのWebページのパフォーマンスを向上させる方法
序文Dockerを使ってHadoopクラスタを起動するたびに、ネットワークカードの再バインド、IPの...
序文 [root@localhost ~]# cat /etc/fstab # #/etc/fsta...
この記事の例では、右上隅の時間表示のリアルタイム更新を実現するためのVueの具体的なコードを紹介しま...
数日前、私のウェブサイトがいくつかの IP アドレスから大量の悪意のある標的型スキャンを受け、ブルー...
目次ノードはMysqlに接続しますMySQLモジュールをインストールするMySQLに接続するよく使わ...
MySQL-8.0.22-winx64のデータベースインストールチュートリアルは参考になります。具体...
質問:オリジン サーバーはターゲット リソースの表現を見つけることができないか、既存の表現を公開した...
目次序文指導の基本フック機能フック関数のパラメータ文章使い方とアイデア成し遂げる汎用性を高める要約す...
ハードウェア上の理由により、機械は標準時間にある程度追いつけない場合があり、その誤差は 1 か月で数...
key_lenの意味MySQL では、次に示すように、explain を使用して SQL ステートメ...
CSS フォント プロパティは、テキストのフォント ファミリ、サイズ、太字、スタイル (斜体など)...
現在の Linux システムが VMware にインストールされているかどうかを確認する方法を教えて...
mysql が閉じない場合の解決策:コンピュータのタスクバーを右クリックしてタスクマネージャーを開き...
vue-element-admin インポートコンポーネントのカプセル化テンプレートとスタイルまず、...
昨日、円形のプログレスバー (Vue 円形プログレスバーを参照してください) についてブログを書きま...