php - mysql 查询帮助 - 需要减轻 PHP 对重复检查器脚本的负担

标签 php mysql

我有一个脚本,可以上传 CSV 并将其插入到数据库的重复检查器临时表中。此时它会执行以下操作:

1) 检查自身(临时表)是否有重复项,并将它们从临时表中全部删除 2)检查客户表是否有重复项,从临时表中删除它们

现在我正在使用 php 循环来执行此操作,这似乎将整个事情拖到了停顿状态,因为客户表有数十万条记录。我相信,如果我可以将很多这样的内容放入查询中,可能会让事情变得更好。上传工作正常,这是有问题的代码部分。

<?
// look for duplicate account_no in the temp table
$sql_1 = "SELECT account_no,count(*) FROM tempTable GROUP BY account_no";
$result_1 = mysql_query($sql_1) or die("Error: " . mysql_error() . "<br>");
while(list($acct,$numcount) = mysql_fetch_row($result_1)) {
// if there is a duplicate in tempTable, delete them all
 if($numcount>1) {
   $toBeRemoved+=$numcount;
   $sql_delete = "DELETE FROM tempTable WHERE(account_no = '$acct')";
   $result_delete = mysql_query($sql_delete) or die("Error: " . mysql_error() . "<br>");
 }
}

// look for duplicate account_no in the customersTable and delete from tempTable
$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>");
}
?>

最佳答案

如果数据库表上有正确的UNIQUE键,您可以使用INSERT IGNORE盲目地INSERT它们,因为这会忽略重复键错误并继续插入非重复行。

关于php - mysql 查询帮助 - 需要减轻 PHP 对重复检查器脚本的负担,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11086198/

相关文章:

php - 使用 HTML5 和 PHP 加载多个文件

php - 相似文本 php mysql

java - 进行网络连接模拟,以避免使用互联网的程序在拨号连接暂时关闭后断开连接

javascript - 使用 AngularJS 从数组中提取特定记录

PHP资源释放

mysql - MariaDB 查询问题(忽略 ORDER BY)

php - 如果已经存在则不要插入条目

php - 替换php中的mysql查询表前缀

mysql - PHP MySQL 连接在专用网络上超时

php - PHP 是否有一种与 Django 模板语言几乎相似的模板语言?