【问题标题】:updating multiple tables mysql optimization更新多个表mysql优化
【发布时间】:2018-12-10 10:36:05
【问题描述】:

我正在尝试更新使用名为“团队”的同一列的多个表。我创建了一个更新语句,但 非常慢 并且需要很长时间。我可以获得一些优化和更快运行的提示吗?

update QB, RB, WR, passing, rushing, receiving
set qb.team='GB',
rb.team='GB',
wr.team='GB',
passing.team='GB',
rushing.team='GB',
receiving.team='GB'
where qb.team=('GNB') or
(rb.team='GNB') or
(wr.team='GNB') or 
(passing.team='GNB') or
(rushing.team='GNB') or
(receiving.team='GNB');

【问题讨论】:

  • 为什么不直接使用 6 种不同的更新语句,而不是将它们全部混合成一个?

标签: mysql sql optimization sql-update


【解决方案1】:

您正在对所有六个表进行巨大的交叉连接。这意味着WHERE 子句中的条件正在扫描大量连接的行。具体来说,您正在扫描所有六个表中行数的乘积。

相反,您应该像这样编写查询。

更新QB 加入 RB ON QB.something = RB.something 加入 WR ON QB.something = WR.something ...等 SET QB.team = 'GB', RB.team='GB' ...等 在哪里

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多