sql >> データベース >  >> RDS >> Mysql

MySQLは大きなデータベースから重複をすばやく削除します

    重複キー+ifnull()を使用して、これでうまくいくと思います:

    create table tmp like yourtable;
    
    alter table tmp add unique (text1, text2);
    
    insert into tmp select * from yourtable 
        on duplicate key update text3=ifnull(text3, values(text3));
    
    rename table yourtable to deleteme, tmp to yourtable;
    
    drop table deleteme;
    

    group by、distinct、サブクエリ、さらにはorderbyを必要とするものよりもはるかに高速である必要があります。これにはファイルソートも必要ありません。これにより、大きな一時テーブルのパフォーマンスが低下します。元のテーブルを完全にスキャンする必要がありますが、それを回避することはできません。



    1. 特定のテーブルのMySQLエンジンタイプを確認するにはどうすればよいですか?

    2. PostgreSQLのようなデータベースよりもRabbitMQのようなメッセージブローカーが必要なのはなぜですか?

    3. LIKEワイルドカードを使用して列を検索(大文字と小文字を区別しない)するにはどうすればよいですか?

    4. MariaDBの日付と時刻の単位