首页 > 解决方案 > mysql 更新命令示例两个表 - SPEED UP

问题描述

假设您有 2 个表,它们之间有共同的电子邮件,并且您想将二进制值 1 设置为匹配字段 - 此查询工作得很好

...但是如果您要处理大量记录,它会非常缓慢并且会给服务器带来巨大的负载(我们是)

UPDATE  table1 a
        INNER JOIN table2 b
            ON a.email = b.email
SET     a.match = 1;

有谁知道完全相同的功能,但编写的语法可以减少服务器负载并更快地处理查询?

谢谢!

标签: mysqlinner-join

解决方案


在运行查询之前,请务必为两个表建立索引。在我们的例子中,表 1 具有唯一值,而表 2 具有相同电子邮件的多条记录(即不同的网站)

CREATE UNIQUE INDEX email ON table1 ( email );
    
CREATE INDEX email ON table2 ( email );

一旦在这两个表上创建了这些索引,查询就会运行得非常快。


推荐阅读