mysql 10万条数据如何查重

steven7677 2017-11-22 10:38:22
mysql 5.5,10万多条数据,根据身份证号码查重(个别身份证可能是空的),用下面的语句是否有问题,老半天没有返回结果,还是有另外的方法?谢谢
SELECT user_id,user_name,user_id_number FROM user_info WHERE user_id_number<>'' AND user_id_number IN(SELECT user_id_number FROM user_info WHERE user_id_number<>'' GROUP BY user_id_number HAVING(COUNT(*))>1 )
ORDER BY user_id_number
...全文
441 5 1 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
steven7677 2017-11-24
重建索引后速度还行了, in改成 exists 效率也好多了,感谢楼上各位
  • 打赏
  • 举报
回复
鞠骞的博客 2017-11-23
又是查询语句group ,order by ,统计语句,是比较慢的, 你用 explain 看看执行计划,有没有建立索引? 欢迎关注个人微信公众号《andyqian》, 最近更新一系列MySQL性能优化文章,期待你的关注!
  • 打赏
  • 举报
回复
zjcxc 2017-11-22
没有索引吧? explain 看下执行计划
  • 打赏
  • 举报
回复
小野马1209 2017-11-22
嵌套查询应该不会那么慢 ,按你语法执行需要多久, 前段时间我本用这样的语法查4万多条数据的重复几秒钟就出结果了
  • 打赏
  • 举报
回复
听雨停了 2017-11-22
引用 楼主 steven7677 的回复:
mysql 5.5,10万多条数据,根据身份证号码查重(个别身份证可能是空的),用下面的语句是否有问题,老半天没有返回结果,还是有另外的方法?谢谢 SELECT user_id,user_name,user_id_number FROM user_info WHERE user_id_number<>'' AND user_id_number IN(SELECT user_id_number FROM user_info WHERE user_id_number<>'' GROUP BY user_id_number HAVING(COUNT(*))>1 ) ORDER BY user_id_number

#查询重复的user_id_number
SELECT
	a.user_id,
	a.user_name,
	a.user_id_number
FROM
	user_info a
INNER JOIN (
	SELECT
		user_id_number
	FROM
		user_info
	WHERE
		user_id_number <> ''
	GROUP BY
		user_id_number
	HAVING
		COUNT(1) > 1
) b ON a.user_id_number = b.user_id_number
ORDER BY
	user_id_number
别用in,改用inner应该会快点
  • 打赏
  • 举报
回复
相关推荐
发帖
MySQL
加入

5.5w+

社区成员

MySQL相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2017-11-22 10:38
社区公告
暂无公告