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
...全文
658 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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应该会快点

56,875

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧