【问题标题】:MySQL UPDATE JOIN statement speed issuesMySQL UPDATE JOIN 语句速度问题
【发布时间】:2014-09-02 15:25:51
【问题描述】:

我在 MySQL 数据库中有两个表,我似乎无法非常有效地使用它们。第一个是包含大约 25,000 行和以下字段的付款表。

ID, Email, Type

第二个是用户表,有 2000 行,如下:

ID, Email, AccessDate

使用 MySQL JOIN 语句,我把它放在一起,它完美地工作:

在 users.Email=payments.Email SET 上更新用户 INNER JOIN 付款 AccessDate=NOW() WHERE payment.Type='success'

问题是,在本地机器上执行查询大约需要 95 秒。关于如何解决这个速度问题的任何提示?

【问题讨论】:

  • 在你的表上添加一些索引
  • 你能把show index from table_name的结果分别贴出两张表吗?
  • 为我可能的无知道歉,但每个表中的 ID 字段是否不算作索引,因为它也是主键?

标签: php mysql join sql-update


【解决方案1】:

首先,您可以使用 EXPLAIN 查看优化器在做什么。您必须将代码重构为 SELECT:

EXPLAIN SELECT * FROM users INNER JOIN payments ON users.Email=payments.Email WHERE payments.Type='success'

很可能是连接没有它可以使用的索引。 “ID”有索引吗?也许您可以将其添加到 Join 子句中?或者可能为两个表的“电子邮件”列添加索引?

【讨论】:

  • 是的!向电子邮件列添加了索引,它在不到半秒的时间内执行......你是明星!谢谢贾尔斯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-26
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多