不能直接在循环里检查更新和插入(还需要注意PHP内存的使用与释放防止用完资源),要使用PDO的事务操作一次提交多条查询(比如一次提交2000条查询语句),其中需要用到的两条比较重要的sql语句分别是:如果不存在则插入否则不插入,如果不存在则插入否则更新
下面是两条语句的实例:
程序代码语句和PDO一次多条查询的函数实例:
最后,因为之前的语句是先判断再分发是否需要插入或是更新,在4万条数据时用时5分多钟,而改进了这个语句之后则缩短至30秒左右,看来数据库占时开销优化很重要。