我正在查询下面运行,以从现有表中获取重复记录。以下是我正在做的过程


上载CSV
将数据加载到临时表
通过连接临时表和当前表,编写查询以检查表中是否已经存在具有相同电话号码的重复记录。


我的查询在当前表中可以正常运行多达100,000条记录,但是在当前表中的实时系统数据上,该记录已超过10,000,000条,因此查询输出超时。

我的查询是

select
tempTbl.id + 1 as SrNo,
`tempTbl`.`phone` as `phone`,
(  CASE WHEN count(panelists.id) > 1 THEN
        CONCAT( CONCAT('Phone Already Exist with Panelist ID ', panelists.id
,' and Duplidate counts is ',count('panelists.id'))
    ELSE
         CONCAT('Phone Already Exist with Panelist ID ',' ',panelists.id)
    END
 ) AS reason from `panelists` as `panelists`
inner join `temp` as `tempTbl` on `panelists`.`phone` = `tempTbl`.`phone`
where `panelists`.`panel_id` = ? group by `tempTbl`.`phone`
having tempTbl.phone != ''


如果有任何优化我的查询的帮助建议,我将不胜感激。提前致谢。

最佳答案

您是否检查并尝试更改和增加了MySQL配置文件中的默认值(mysqld部分中的选项connect_timeout)-

[mysqld] connect_timeout=100


请查看并比较两个数据库服务器中的Configuration参数。如果在一个服务器上成功执行查询,我们可以检查两个服务器的配置参数。

关于mysql - 从两个表mysql select查询中查找重复记录(电话),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45966615/

10-11 14:29
查看更多