检查数据库中的现有条目或重新创建表?

时间:2011-05-26 14:59:48

标签: php mysql compare

我有一个PHP脚本从服务器中提取文件,并每隔4小时将其中的值插入数据库。

此文件可能并且很可能在4小时内(或我最终选择的任何时间范围)发生变化。这是一个属性及其所有者的列表。

检查文件并将其与每个数据库条目进行比较并在需要时更新任何文件或创建临时表然后使用SQL查询对这两个进行比较会更好吗?

3 个答案:

答案 0 :(得分:1)

无。

我个人所做的是使用INSERT运行ON DUPLICATE KEY UPDATE命令(假设您的表格设计合理,并且您使用的文件中至少有一条信息为UNIQUE你应该根据你的评论键。)

原因

创建临时表是一件麻烦事。 比较也很麻烦。您需要选择一条记录,比较一条记录,如果不相等则更新记录等等 - 这只是浪费时间来比较一条信息,而且还有一种更好的方法。

如果您只是插入找到的所有内容并且发生冲突会更容易 - 这意味着记录存在且很可能需要更新。

通过这种方式,您可以通过1个查询处理所有内容,并保留您的数据完整性,这样您就可以继续填写表格或使用新记录进行更新。

答案 1 :(得分:0)

我认为最好下载文件并更新现有表,也许使用REPLACE或REPLACE INTO。 “REPLACE的工作原理与INSERT完全相同,只是如果表中的旧行与PRIMARY KEY或UNIQUE索引的新行具有相同的值,则在插入新行之前删除旧行。” http://dev.mysql.com/doc/refman/5.0/en/replace.html

答案 2 :(得分:0)

据推测,您有一个必须匹配的列表,以便您决定这两个匹配。

如果您在这些列上创建UNIQUE索引,则可以使用INSERT ... ON DUPLICATE KEY UPDATEmanual)或REPLACE INTO ...manual