搜索和更新数据库操作非常慢

编码

我有一个表“ table1”,其中包含近40万条记录。还有另一个表“ table2”,它具有大约450,000条记录。

我需要删除表1中所有在表2中重复的行。我一直在尝试使用php来执行脚本,该脚本已运行了几个小时,但尚未完成。真的需要那么多时间吗?

字段asin是table1中的varchar(20)

ASIN字段是Table2中的Index和char(10)

$duplicat = 0;
$sql="SELECT asin from asins";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $ASIN = $row['asin'];
        $sql2 = "select id from asins_chukh where ASIN='$ASIN' limit 1";
        $result2 = $conn->query($sql2);
        if ($result2->num_rows > 0) {
            $duplicat++;
            $sql3 = "UPDATE `asins` SET `duplicate` = '1' WHERE `asins`.`asin` = '$ASIN';";
            $result3 = $conn->query($sql3);
            if($result3) {
                echo "duplicate = $ASIN <br/>";
            }
        }
    }    
}

echo "totaal :$duplicat";
彼德

您可以运行一个单独的sql命令,而不是运行循环,例如:

update table_2 t2 
set t2.duplicate = 1
where exists (
    select id 
    from table_1 t1 
    where t1.id = t2.id);

警告!我没有测试上面的sql,因此您可能需要验证语法。

对于这种数据库操作,使用php循环和联接从来都不是一个好主意。大多数时间将浪费在php服务器和mysql服务器之间的网络数据传输上。

如果以上sql花费的时间太长,则可以考虑将查询集限制在一定范围内。就像是:

update table_2 t2 
set t2.duplicate = 1
where exists (
    select id 
    from table_1 t1 
    where t1.id = t2.id
      and t2.id > [range_start] and t2.id < [range_end] );

这样,您可以启动并行运行的多个更新

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将数据从CSV插入MySQL数据库非常慢

来自分类Dev

将数据从CSV插入MySQL数据库非常慢

来自分类Dev

大数据库中的MongoDB计数非常慢

来自分类Dev

从数据库打印记录非常慢

来自分类Dev

数据库单元:测试插入和更新操作

来自分类Dev

拖放操作后更新数据库

来自分类Dev

数据库优化插入和搜索

来自分类Dev

Firebase 数据库和搜索功能

来自分类Dev

Postgres上的“更新表”操作非常慢

来自分类Dev

在大型数据库上,简单的Neo4j查询非常慢

来自分类Dev

Neo4J查询与巨大的数据库非常慢

来自分类Dev

我的包含BLOB字段的数据库表上的选择查询非常慢

来自分类Dev

如何加快从sqlite数据库加载的速度?(sqlite3_step非常慢)

来自分类Dev

远程插入和更新数据库?

来自分类Dev

数据库操作

来自分类Dev

从SQL数据库搜索和显示数据

来自分类Dev

基于HSQLDB的库非常慢:试图缩小对bug的搜索

来自分类Dev

jpa实体不更新数据库中的关系操作

来自分类Dev

创建操作后更新数据库不起作用

来自分类Dev

用于在大列表中查找和更新数据的Google表格脚本非常慢

来自分类Dev

在数据库中搜索Python Django“和/或”

来自分类Dev

使用ajax和codeIgniter搜索数据库

来自分类Dev

使用PHP,AJAX和jQuery搜索MySQL数据库

来自分类Dev

在数据库中搜索Python Django“和/或”

来自分类Dev

使用ajax和codeIgniter搜索数据库

来自分类Dev

使用PHP,AJAX和jQuery搜索MySQL数据库

来自分类Dev

Android SQite数据库搜索和查找列错误

来自分类Dev

结合数据库和Lucene搜索的最佳实践

来自分类Dev

MSSQL 搜索数据库表和视图