【问题标题】:Which technique is more efficient for replacing records哪种技术更有效地替换记录
【发布时间】:2014-10-24 23:24:34
【问题描述】:

我有一个应用程序必须从远程源导入大量数据。每次调用 500 到 1500 个条目。

有时某些传入的数据需要替换已存储在 dB 中的数据。如果我不得不猜测,我会说在 300 或 400 个条目中需要替换一个。

每个传入条目都有一个唯一的 ID。所以我想弄清楚总是根据这个 ID 发出删除命令或者检查是否已经有一个条目 THEN delete 是否更有效。

我找到了this SO post,它谈到了 dB 必须做的繁重工作才能删除某些内容。但它正在讨论一个不同的问题,所以我不确定它是否适用于此。

【问题讨论】:

  • 您是在应用程序级别还是在数据库级别进行工作?您的应用使用什么语言,您使用的数据库是什么?
  • 这是一个 MySQL dB,我正在使用 PHP。不知道如何回答你的其他问题。我正在从我的应用程序中进行所有 dB 调用。

标签: mysql


【解决方案1】:

每个传入条目都有一个唯一的 ID。所以我想弄清楚总是根据这个 ID 发出删除命令或者检查是否已经有一个条目 THEN delete 是否更有效。

两者都没有。使用INSERT ... ON DUPLICATE KEY UPDATE ...

【讨论】:

  • 一个dB表可以有多个键吗?因为现在我有一个自动增量键。每个项目的唯一 ID 未标记为键。
  • 它可以有任意多的键。此列应该是唯一键。
【解决方案2】:

既然您使用的是 MySQL 并且您有一个唯一的密钥,那么就让 MySQL 来完成这项工作。

你可以使用 INSERT INTO..... ON DUPLICATE KEY UPDATE......

MySQL 会尝试在表中插入一条新记录,如果表中存在唯一值,那么 MySQL 将在更新后更新您设置的所有字段

您可以阅读更多关于 INSERT INTO..... ON DUPLICATE KEY UPDATE...... 语法的信息 http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2016-02-24
    • 2011-01-17
    • 2011-12-26
    • 1970-01-01
    • 2016-09-19
    相关资源
    最近更新 更多