我在MySQL数据库中有两个表,似乎不能很有效地处理它们。第一个是一个包含大约25000行和以下字段的付款表。
ID, Email, Type
第二个是一个用户表,它有2000行和以下内容:
ID, Email, AccessDate
使用MySQL JOIN语句,我将其组合在一起,并且它非常完美:
更新用户INNER加入用户支付。电子邮件=付款。电子邮件设置AccessDate=NOW()WHERE付款。类型="成功"
问题是,在本地机器上执行查询大约需要95秒。关于如何解决速度问题,有什么建议吗?
首先,您可以使用EXPLAIN来查看优化器在做什么。您必须重新构建代码才能成为SELECT:
EXPLAIN SELECT * FROM users INNER JOIN payments ON users.Email=payments.Email WHERE payments.Type='success'
最有可能的是联接没有可以使用的索引。"ID"有索引吗?也许你可以把它添加到Join子句中?或者可能为两个表的"电子邮件"列添加索引?