【发布时间】:2016-06-05 00:39:36
【问题描述】:
我面临着前所未有的挑战,并且难以找到有效的解决方案。 (可能是因为我不是受过训练的程序员,也不知道所有的术语)。
挑战:
我有一个数据源,我需要每天使用它来维护一个 mysql 数据库。为此,需要检查记录是否存在,然后相应地更新或插入。
这本身就很简单,但是要为数千条记录运行它——对每条记录进行查询以检查它是否已经存在于数据库中似乎效率很低。
有没有比遍历我的数据馈送并为每条记录运行单独查询更有效的方法?也许是一种以某种方式将它们准备成一个更大的查询的方法(假设这是一种更有效的方法)。
我不确定这里是否需要代码示例,但如果我可以提供更多信息,请尽管询问!我非常感谢任何建议。
编辑:
@Sgt AJ - 数据馈送中的每条记录都有许多不同的列,但它们由一个 ID 索引。我会在数据库中检查该 ID 以查看是否存在记录。在这种情况下,我只更新一个表,尽管是一个大表(30 多列,主要是文本)。
【问题讨论】:
-
在不了解数据或数据库组织方式的情况下,很难真正为您提供任何详细的答案。如果您可以将数据馈送分组到您也可以在查询中使用的逻辑组中,也许您可以将数据库的部分加载到一个数组中,根据该数组检查所有数据,并执行您需要的任何更新,然后使用重写数组数据库中记录的下一部分,并为提要中的下一个逻辑数据组重复。
-
感谢中士的评论!我已经为您更新了更多信息。就从数据库中预加载一组 ID 以与提要进行比较而言,可能有数十万条记录,而提要仅包含较小的样本。
标签: php mysql performance query-optimization