本地服务器和远地服务器上都有一个字段几乎相同的数据库表。现在本地服务器需要接收远地服务器发送过来的XML数据文件,使用php读取xml中的数据,然后转存到本地服务器数据库表中。本地数据库表是通过字段id和user来标识唯一记录的,转存过程中可能会执行以下操作:
1、搜索记录
2、如果记录不能存在,则插入;
3、如果表中已存在记录,则进行字段值比较,如果某个字段值已发生变化,则更改字段值,更新表;问题:
1、因为XML数据量大,且本地数据库表的更新操作由用户触发,所以操作速度不能过慢,有没有好的更新数据库的解决方案?或者不按照上面提到的操作步骤,可以快速地将xml数据存储到本地数据库?2、本地数据库接收远地服务器的xml操作,除了用户执行相应的php文件来触发外,还有没有其他好的办法?php没有实时执行的功能,用死循环又太浪费资源。

解决方案 »

  1.   

    仅对这个,你可以考虑一下MYSQL的REPLACE语句或者insert ... on duplicate update 这样,可以仅用一句完成以上操作。
      

  2.   

    13.2.6. REPLACE语法
    http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#replace
    13.2.4. INSERT语法
    http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#insert
      

  3.   


    那这两种方法,哪种执行效率高点呢?看了文档,REPLACE如果是对已有记录的话,就相当于执行两次操作,一次删除,一次插入;
    而insert ... on duplicate update 不管怎样都是执行一次操作。
      

  4.   

    如你所说。 INSERT 理论上比较好一些。 不过没有实际测试过。你可以自己做个试验。