Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/mysql-在非常大的表中检查重复项会导致挂起_Php_Mysql - Fatal编程技术网

PHP/mysql-在非常大的表中检查重复项会导致挂起

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)) {

我正在尝试检查一个表中是否存在重复项,并从另一个表中删除它们。它永远挂起,最终导致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>");
}

这些都会挂起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;