【问题标题】:php/mysql better option in updating very huge tablesphp/mysql 更新非常大的表的更好选择
【发布时间】:2012-04-22 23:45:46
【问题描述】:

我有两张大桌子。如果 productid 和 userid 匹配,我想用第一个表更新第二个表中的所有字段,如果不存在则插入新字段。 JOIN 会比简单的 UPDATE 更好吗?替换成怎么样?有人可以帮助我做出最佳决策吗?因为桌子很大。

谢谢。

【问题讨论】:

  • 大量数据记录(约 1000 亿条)和许多用户一次执行相同的功能。
  • 嘿,这可能不是最好的解决方案,但我会为此使用 2 个查询,第一个更新所有字段(如果存在),然后第二个插入不存在的字段。
  • 我认为这里的一个大问题是您是否可以在进行更新时停止数据库。由于您也可能使用 php,因此在 sql 中使用 limit 子句并让 php 一次执行多个记录以避免数据库在完成处理之前完全锁定可能是一个想法。
  • 我会使用 Joshua 的解决方案,但使用子查询,所以一切都将在 SQL 中完成,因此无需“停止”数据库。不过,不确定如何进行此查询。

标签: php mysql


【解决方案1】:

1000 亿非常罕见,所以我假设您在 stackoverflow 上找不到可靠的答案。

您应该自己做基准测试,查看EXPLAIN keyword on mysql.com 并编写一个简短的脚本(php one here) 来分析花费的时间。

另一方面,我不确定 MySQL 是否是 1000 亿数据库的最佳选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 2013-06-27
    • 2019-02-13
    • 1970-01-01
    相关资源
    最近更新 更多