$sql2 = "SELECT `id` FROM `saa_game` WHERE `domain_id` = '".$row['id']."' AND `unique_id` = '".s($oGame->unique_id)."' AND `year` = '".$iYear."' AND `month` = '".$iMonth."' LIMIT 1";
$result2 = mysql_query($sql2) or die(mail('rpaiva@golevel.com','SAA Gather Error',mysql_error()));
if(mysql_num_rows($result2) == 1)
{
$row = mysql_fetch_assoc($result2);
$sql3 = "UPDATE `saa_game` SET `plays` = '".s($oGame->plays)."' WHERE `id` = '".$row['id']."' LIMIT 1";
$result3 = mysql_query($sql3) or die(mail('email@sample.com','SAA Gather Error',mysql_error()));
}
else
{
$sql3 = "INSERT INTO `saa_game` (`domain_id`,`type`,`source`,`unique_id`,`plays`,`year`,`month`) VALUES ('".$row['id']."','".s($oGame->type)."','".s($oGame->source)."','".s($oGame->unique_id)."','".s($oGame->plays)."','".$iYear."','".$iMonth."')";
$result3 = mysql_query($sql3) or die(mail('email@sample.com','SAA Gather Error',mysql_error()));
}
我每隔10分钟就在cron作业的单页加载上运行40,000次这组查询。这需要很长时间才能进入下一个cron工作。如果我可以将其减少为一个查询而不是两个,那就太好了。 (只要实际存在性能差异)
答案 0 :(得分:2)
如果select命中所有正确的索引,则不会有性能提升。事实上,它可能更糟! MySQL的REPLACE INTO
实现为删除,然后插入!
考虑使用MySQL的INSERT INTO ... ON DUPLICATE KEY UPDATE
。
请记住,这两个选项都是MySQL独有的。