我有两个数据库,一个非常大(5 GB)和一个较小的数据库,它使用作为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)的代码:
$SQL_INSERT="INSERT IGNORE INTO oddsnavi_baby.calc (id, eventname, odds1, oddsX, odds2) VALUES ('$eventid', '$eventname', '$odds1', '$oddsX', '$odds2')";
mysql_db_query($database_baby, $SQL_INSERT) or die("Failed Query of " . $SQL_INSERT);
如果odds1,oddsX或odds2的现有值与要写入数据库的值不同,如何更改此部分以更新行?如果任何值不同,那么行也会更新,因为前两个不会改变。
答案 0 :(得分:0)
$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);
这里在这种情况下,如果行数据没有变化则存在冗余,那么它也将是更新,这将是开销。检查值可能会降低它
答案 1 :(得分:0)