我正在查询下面运行,以从现有表中获取重复记录。以下是我正在做的过程
上载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/