我将数据上传到mysql db时遇到了巨大的性能问题。举个例子,我有一些特殊的工具可以说成千上万的人的个人信息。
我有一个工具可以挖掘人们的电话号码。另一个地雷说人民的家庭住址。另一个人挖掘了这个人的照片。因此,对于这个例子,说A国有10万人。我将不得不在以后挖掘来自不同国家的数据。这些采矿工具将在不同时间完成。电话号码的挖掘需要20分钟。挖掘照片需要1周时间。挖掘地址需要3天。
客户希望在现有表/ db中尽快查看数据。我写了一些脚本来检测一个工具何时完成开始逐行上传数据。但是,这似乎花了很长时间(使用UPDATE ...)。
有更快的方法吗?
db中存在的表是这样的结构:
列:ID_COUNTRY
,ID_PERSON
,FULL NAME
,PHONE
,BLOB_PHOTO
,ADDRESS
答案 0 :(得分:1)
是的,有更快的方法。通过插入表格,将每个进程的数据放入一个单独的表中。
然后,您必须创建一个查询来收集数据:
select *
from people p left outer join
phones ph
on p.personid = ph.perhsonid left outer join
addresses a
on p.personid = a.personid left outer join
photos pho
on p.personid = pho.personid;
每个表都应该从空开始。当结果可用时,可以使用insert加载表。这至少有两个优点。 (1)插入比更新快,并且批量插入可能更快。 (2)数据在某些表中可用,而不会阻塞插入到其余表中。