使用另一个表从表中删除记录?

ahm*_*med 1 php mysql database optimization query-optimization

注意:编辑:请编辑标题,如果有更好的:)

我的问题是:

我的数据库中有两个表

     -----------
     | table1   |
     |----------|
     | id       |
     |text      |
     ===========


     -----------
     | table2   |
     |----------|
     | id       |
     |text      |
     ===========
Run Code Online (Sandbox Code Playgroud)

table1是600,000条记录

table2是5,000,000条记录!! :)

删除table2中不在table1中的所有记录的最佳方法是什么

我主要是顺便 - 最快的方式,因为我不想等待4个小时来完成这个过程

你有比以下代码更好的东西:

<?PHP
   $sql = "select text from table2";
   $result = mysql_query($sql) or die(mysql_error());
   while($row = mysql_fetch_array($result)){
        $text = $row["text"];
        $sql2 = "select id from table1 where text = '$text'";
        $query2 = mysql_query($sql2) or die(mysql_error());
        $result2 = mysql_num_rows($query2);
        if($result2==0){
             $sql3 = "delete from table2 where text = '$text'";
             $query3 = mysql_query($sql3) or die(mysql_error());
        }
   }
?>
Run Code Online (Sandbox Code Playgroud)

谢谢

Rag*_*geZ 5

那么让RDBM处理它呢?

例如

DELETE FROM table2 WHERE text NOT IN (select distinct text from table1)
Run Code Online (Sandbox Code Playgroud)

干杯

PS:在测试前做一些备份......