使用php快速将数据从巨大的JSON插入或更新到MYSQL

使用php快速将数据从巨大的JSON插入或更新到MYSQL,php,mysql,json,Php,Mysql,Json,在我的一个项目中,我从一个巨大的json更新我的mysql数据库时遇到了一个问题。 讨论中的json对象由大约1000个条目组成,如下所示: [{ "uniqueId":"578742901714e", "lat": -76.760541, "lng": 121.289062, "description":"foo and bar", "visible": true }] 为了将json中的数据与数据库进行比较,我使用了包含在不同循环中的不同语句。 虽然

在我的一个项目中,我从一个巨大的json更新我的mysql数据库时遇到了一个问题。 讨论中的json对象由大约1000个条目组成,如下所示:

[{
    "uniqueId":"578742901714e",
    "lat": -76.760541,
    "lng": 121.289062,
    "description":"foo and bar",
    "visible": true
}]
为了将json中的数据与数据库进行比较,我使用了包含在不同循环中的不同语句。 虽然这样做有效,但整个json的处理和写入却需要花费约45秒的时间

编辑:

为了澄清这一点,我循环了json_decode()返回的数组,并通过SELECT和INSERT语句将数据直接与数据库进行比较,这两个语句都可以工作,但速度非常慢,因为数据非常庞大

因为用户必须等待以确保数据完整性,所以我决定应该加快速度

所以我研究了在重复密钥更新中使用INSERT INTO,它应该可以处理多个数据集

但真正的问题是: 因为像“description”这样的条目保存在它们自己的表中,所以我需要像LAST_INSERT_ID()这样的内容来知道刚刚插入的数据集的自动增量ID。但是LAST_INSERT_ID()不是这样工作的,只有在批插入中使用它时才返回第一行。()

所以我被困在一个正常但非常慢的执行和一个不正常但(据说)非常快的执行之间

我真的不知道该怎么做,你能帮我吗


编辑:

该数据库由一些表组成。最突出的是以下两个方面:

表poi:

#1 id int auto-increment primary
#2 unique_id varchar(13) unique
#3 date int(11)
#4 visible tinyint(1)/bool
表poi_说明:

#1 id int auto-increment primary
#2 poi_id int(11)
#3 description text
#4 date int(11)
#5 user int(11)

在过去的两天里,我读了很多东西,以至于我真的不知道如果uniqueid已经在表中,如何更新行。我想,我可以让它在重复更新时使用INSERT,但这只会查找主键-至少在我看来是这样。

从提供的少量信息来看,您处理的数据似乎不适合保存为JSON。数据不应该保存为JSON。客户端将其作为json进行处理,并将其作为json发送到服务器。在那里,它应该被分为相应的字段。那么你没有提供足够的信息。请添加一些代码以帮助您我们还需要了解插入/更新表的结构,以及您关于如何工作的精确规则(例如,始终尝试插入,如果uniqueId重复,则更新…)。我更新了问题。我对qhole mysql有点陌生,如果我忘记了什么,请原谅。从提供的少量信息来看,您处理的数据不适合保存为JSON。数据不应该保存为JSON。客户端将其作为json进行处理,并将其作为json发送到服务器。在那里,它应该被分为相应的字段。那么你没有提供足够的信息。请添加一些代码以帮助您我们还需要了解插入/更新表的结构,以及您关于如何工作的精确规则(例如,始终尝试插入,如果uniqueId重复,则更新…)。我更新了问题。我对qhole mysql有点陌生,如果我忘了什么,请原谅。