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

MySQLクエリを更新用に最適化するにはどうすればよいですか?

    numberのインデックスをまだ持っていない場合 1つ追加する必要があります-

    CREATE INDEX table_number ON table (number);
    

    更新 これを試してください-

    UPDATE inv t1
    INNER JOIN inv t2
        ON t1.name = t2.name
        AND t1.id <> t2.id
    SET t1.flag_qty = 1;
    

    このフラグの更新を最初に行う代わりに、このデータを別のテーブルに直接選択することで、重複だけでテーブルを作成できます。

    INSERT INTO duplicate_invs
    SELECT DISTINCT inv1.*
    FROM inv AS inv1
    INNER JOIN inv AS inv2
        ON inv1.name = inv2.name
        AND inv1.id < inv2.id
    

    invから行が削除されるロジックを説明できる場合 表では、プロセス全体を1つのステップで実行できる可能性があります。



    1. mysqlで「存在しない」を使用するSQL除算

    2. mysql拡張機能は非推奨であり、将来削除される予定です。代わりにmysqliまたはPDOを使用してください。

    3. Postgresが配列にありません

    4. MySQL文字列分割