在SQL数据库中插入/更新/删除项的PHP代码

在SQL数据库中插入/更新/删除项的PHP代码,php,mysql,insert,sql-update,insert-update,Php,Mysql,Insert,Sql Update,Insert Update,我有两个数据库,一个非常大(5GB),另一个较小,通过运行一个cron作业的PHP进行更新,以从大数据库中提取必要的数据 到目前为止,我已经能够从大数据库中提取数据,并在行不存在的情况下将其插入到小数据库中 以下是数据库行的外观: 123456 TeamA-TeamB 1.14 4.30 7.60 (id, eventname, odds1, oddsX, odds2) PHP需要a)检查行是否存在,b1)如果不存在则添加,b2)如果确实存在则检查odds1、oddsX和odds2的值是否不同

我有两个数据库,一个非常大(5GB),另一个较小,通过运行一个cron作业的PHP进行更新,以从大数据库中提取必要的数据

到目前为止,我已经能够从大数据库中提取数据,并在行不存在的情况下将其插入到小数据库中

以下是数据库行的外观:

123456 TeamA-TeamB 1.14 4.30 7.60
(id, eventname, odds1, oddsX, odds2)
PHP需要a)检查行是否存在,b1)如果不存在则添加,b2)如果确实存在则检查odds1、oddsX和odds2的值是否不同,c)如果存在,则更新值

这是执行以下操作的代码a)和b1):

如果odds1、oddsX或odds2的现有值与要写入数据库的值不同,如何更改此部分以更新行?如果有任何值不同,则更新行也可以,因为前两个值无论如何都不会更改

$SQL_INSERT="INSERT IGNORE INTO oddsnavi_baby.calc (id, eventname, odds1, oddsX, odds2) VALUES ('$eventid', '$eventname', '$odds1', '$oddsX', '$odds2')";
$SQL_UPDATE="update oddsnavi_baby.calc set odds1=\"$odds1\",oddsX=\"$oddsX\",odds2=\"$odds2\" where id=\"$eventid\");
$query="select * from oddsnavi_baby.calc where id=\"$eventid\"";
$process=mysql_query($query);
if(mysql_num_rows($process))       
        mysql_db_query($SQL_UPDATE);
else
        mysql_db_query($database_baby, $SQL_INSERT) or die("Failed Query of " . $SQL_INSERT);
在这种情况下,如果行数据没有变化,则会有冗余,这将是一种开销。检查值可能会降低它

尝试:

REPLACE INTO 
而不是插入忽略到


这里的文档:

为什么不使用select查询进行检查,然后如果返回null insert query,或者如果不是null,则选择差异查询,然后更新查询大型数据库有15.000.000行。我认为每次通过33000行较小的数据库运行查询太慢了,我正在寻找一个更快的解决方案(如果存在的话)。我实际上是在避免在较小的数据库上运行查询。$SQL\u INSERT中的“IGNORE”顺序避免了运行查询以检查值是否已经存在的问题,我希望得到类似的解决方案。
REPLACE INTO