0

あるテーブルで重複をチェックし、別のテーブルから削除しようとしています。永久にハングし、最終的に500の内部エラーが発生します。これがphpでの私の元の方法でした:

$sql_2 = "SELECT account_no FROM customersTable";
$result_2 = mysql_query($sql_2) or die("Error: " . mysql_error() . "<br>");
while(list($acct) = mysql_fetch_row($result_2)) {
   $sql_delete = "DELETE FROM tempTable WHERE(account_no = '$acct')";
   $result_delete = mysql_query($sql_delete) or die("Error: " . mysql_error() . "<br>");
}

次に、上記のスクリプトの代わりに次のクエリを試しましたが、すべてハングしました。

DELETE FROM tempTable WHERE account_no IN (SELECT account_no FROM tempTable)

DELETE FROM tempTable USING tempTable, customersTable ct WHERE tempTable.account_no=ct.account_no

これらはすべて20分以上ハングし、最後に「要求は完了しませんでした。サーバーが予期しない状態になりました」という内部サーバーエラーが発生します。

私は、phpを含まないソリューションや、キャッシング、バッチ処理、または必要なものを含むすべてのソリューションを受け入れています。

4

1 に答える 1

1

MySQL側で実行するだけで試すことができます:

DELETE tempTable 
FROM customersTable
JOIN tempTable
ON customersTable.account_no = tempTable.account_no;
于 2012-06-18T18:06:35.457 に答える