比较两个表,找出全部字段数据相同的条数。数据量很大,一直在执行中,怎么解决

MySql 码拜 4年前 (2016-09-19) 532次浏览
SELECT * FROM `tower_res_result` t  JOIN tower_res_result1 t1 ON
t.RES_COL_1   =t1.`city`
AND t.RES_COL_2   =t1.`county`
AND t.RES_COL_3   =t1.`site_name`
AND t.RES_COL_4   =t1.`site_code`
AND t.RES_COL_5   =t1.`longitude`
AND t.RES_COL_6   =t1.`latitude`
AND t.RES_COL_7   =t1.`site_address`
AND t.RES_COL_8   =t1.`orig_rights_unit`
AND t.RES_COL_9   =t1.`wind_pressure`
这个是mysql写的部分sql,一共有86个字段,  应该怎么优化,加索引的话是不是全部的字段都加?全部的都加不就等于没加吗
解决方案

10

两个表UNION ALL 合并  之后分组计算数量大于1的数据条数;
真实需求是什么?只是为了查看相同条数吗?

10

以文本方式贴出  不要贴截图
explain select …
show index from ..
以供分析。

10

引用:

兄弟,你的意思是这样写
SELECT * FROM `tower_crm_result` t  JOIN tower_crm_result2 t1 ON
t.CRM_COL_1   =t1.`operator`
WHERE t.CRM_COL_2   !=t1.`req_site_name`
AND t.CRM_COL_3   !=t1.`site_code`
AND t.CRM_COL_4  ! =t1.`order_no`
AND t.CRM_COL_5  ! =t1.`constr_mode`
吗?  但是
你用a !=a1 查出来的结果不对,原因是本人第二张表有重复的id ,有垃圾数据,假如查不相同的话结果应该不对。

用新生成的表左联原始表   重复数据根据需求过滤掉    where 后的关联用OR

10

方法很多,快的没有。
假如是临时操作,可以考虑写个脚本,逐条慢慢删除相同记录的方法(记得id要有索引),
这样虽然慢,但可以随时中断,中断前的操作仍然有效果,删除操作会越来越快的,
也可以放在夜里慢慢跑。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明比较两个表,找出全部字段数据相同的条数。数据量很大,一直在执行中,怎么解决
喜欢 (0)
[1034331897@qq.com]
分享 (0)