1

ここにテーブルがあります

Id   Date   Name     vendor
1   | 123  |  jungle     |  qwe
2   | 43   |  jungle     |  qwe
3   | 678  |  jungle     |  ewq
4   | 678  |  jungle     |  ewq
5   | 678  |  jungle     |  ewq
6   | 678  |  jungle     |  hgjghj

このスクリプトは、名前列に重複する値があり、ベンダー値も同じである行をテーブルから削除します。一意の行を 1 つだけ残します。$.post()スクリプトは、フロントエンドのボタンをクリックした後、XHR ajax call を介して実行されます。

$sql = DELETE x
FROM $table x
JOIN 
 ( SELECT vendors
        , email
        , MIN(lead_id) min_lead_id 
     FROM $table
    WHERE vendors = $vendor
    GROUP BY vendors
           , email
 ) y 
ON y.vendors = x.vendors 
AND y.email = x.email
AND y.min_lead_id <> x.lead_id;

mysql_query($sql, $conn);
echo json_encode($foo);

そして結果

Id   Date   Name     vendor
1   | 123  |  jungle     |  qwe
3   | 678  |  jungle     |  ewq
6   | 678  |  jungle     |  hgjghj

50k のテーブルでは、2 秒で終了します。というか、 を介して ajax 呼び出しを返しますecho json_encode($result);。その時点で、プロセスは完了したと思いますが、mysql テーブルに移動して何度も更新した後、テーブルで報告された行の総数がクエリがまだ実行されているかのように変化し続けるため、mysql がまだ実行されていることがわかりました。

echo json_encode($result);データベースの更新が完了するまで待機させるにはどうすればよいですか? または、これを解決するためのより良い方法はありますか? ありがとう。

$("#complete_dedupe").live("click", function(e) {
    e.preventDefault();
    table_name = $('#IMEXp_import-selectTable-select option:selected').val();
    $.post("dedupevendor.php", {"table": table_name}, function(data) {
        count_dedupe = 0;
        count_dedupe = data;
        $("#dupe_vendor").append(count_dedupe);
        $("#tr2").fadeIn("slow");
        vendor = $("#vendor_hidden").val();
        $("#edit_par4").append(vendor);
    }, "json")
});

phpmyadmin を継続的に更新することで、丸で囲まれた数字が約 1 分未満の間変化します。これは、重複排除スクリプトを実行した直後と、スクリプトが ajax 呼び出しから既に戻った直後にのみ発生します。写真は下です

ここに画像の説明を入力

4

2 に答える 2

2

phpMyAdmin に変更が見られない理由はInnodb、実行中の行数を保持していないためMyISAMです。

テーブルの要約を見る代わりに、これを実行してください。重複除外スクリプトを実行すると変更されるはずです。

SELECT COUNT(*) FROM auto;
于 2012-08-08T03:01:30.947 に答える