以最佳方式更新表数据

时间:2014-01-25 14:30:24

标签: mysql sql database

我每隔3小时通过查询获取一次Twitter数据。其中一个字段url是关键所在。对于每个网址,我都有retweet_count值。

有时在接下来的3个小时内,我会获得与之前类似的网址记录。但是retweet_count附带了更新的新值。

在每个查询中,我都会获得大约200个网址。

一种方法是在每次插入期间检查url是否存在。如果没有,则直接插入。如果已经存在,则获取之前的rt_count值并与较新的值进行比较,如果不同则更新它。

我的数据会逐渐增加到表中缺少的记录。如果上述情况需要太多延迟。

有没有更好的方法呢?对此有任何乐观的解决方案吗?

$insertQuery2 = "INSERT INTO frrole_article_sentiment (`url`, `sentiment`, `title` , `time` , `img_url` , `rt_count` , `tweet_count`, `today`, `youtube_url`, `hash`) VALUES ('".$url."','".$sentiment."','".$title."','".$time."','".$img_url."','".$rt_count."','".$tweet_count."','".$today."', '".$is_youtube."', '".$hash."')";

                    if (!mysqli_query($con,$insertQuery2))

                    {

                        //die('Error: ' . mysqli_error($con));

                    }

1 个答案:

答案 0 :(得分:1)

由于您使用的是MySQL,因此可以使用ON DUPLICATE KEY UPDATE功能: http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

您的查询将变为:

INSERT INTO frrole_article_sentiment (url, rt_count)
VALUES('$url', '$rt_count')
ON DUPLICATE KEY UPDATE rt_count=$rt_count;

(“url”假定为PK,为简单起见缩短了查询,你应该包含所有字段)