PHP/mysql-在非常大的表中检查重复项会导致挂起
我正在尝试检查一个表中是否存在重复项,并从另一个表中删除它们。它永远挂起,最终导致500个内部错误。这是我在php中的原始方法:PHP/mysql-在非常大的表中检查重复项会导致挂起,php,mysql,Php,Mysql,我正在尝试检查一个表中是否存在重复项,并从另一个表中删除它们。它永远挂起,最终导致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_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>");
}
及
这些都会挂起20分钟或更长时间,最后出现内部服务器错误“请求未完成。服务器遇到意外情况。”
我对任何和所有解决方案都持开放态度,即使是那些不涉及php或涉及缓存、批处理或任何需要的解决方案。您可以尝试在MySQL端运行它:
DELETE tempTable
FROM customersTable
JOIN tempTable
ON customersTable.account_no = tempTable.account_no;
你好。你能发布这个调用的php日志吗?检查到底是什么抛出了500错误代码可能会有所帮助。它似乎没有记录此错误代码。您想只删除重复的值而不保留副本吗?这不会从CustomerTable中删除记录吗?不,仅从
attreable
(从中删除的之前的任何内容都是从中删除的表)。请参阅als:(“对于第一个多表语法,仅删除from子句之前列出的表中的匹配行。”)
DELETE FROM tempTable USING tempTable, customersTable ct WHERE tempTable.account_no=ct.account_no
DELETE tempTable
FROM customersTable
JOIN tempTable
ON customersTable.account_no = tempTable.account_no;