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
5 个解决方案
#1
#查询重复的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应该会快点
#2
嵌套查询应该不会那么慢 ,按你语法执行需要多久,
前段时间我本用这样的语法查4万多条数据的重复几秒钟就出结果了
前段时间我本用这样的语法查4万多条数据的重复几秒钟就出结果了
#3
没有索引吧? explain 看下执行计划
#4
又是查询语句group ,order by ,统计语句,是比较慢的, 你用 explain 看看执行计划,有没有建立索引?
欢迎关注个人微信公众号《andyqian》, 最近更新一系列MySQL性能优化文章,期待你的关注!
欢迎关注个人微信公众号《andyqian》, 最近更新一系列MySQL性能优化文章,期待你的关注!
#5
重建索引后速度还行了, in改成 exists 效率也好多了,感谢楼上各位
#1
#查询重复的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应该会快点
#2
嵌套查询应该不会那么慢 ,按你语法执行需要多久,
前段时间我本用这样的语法查4万多条数据的重复几秒钟就出结果了
前段时间我本用这样的语法查4万多条数据的重复几秒钟就出结果了
#3
没有索引吧? explain 看下执行计划
#4
又是查询语句group ,order by ,统计语句,是比较慢的, 你用 explain 看看执行计划,有没有建立索引?
欢迎关注个人微信公众号《andyqian》, 最近更新一系列MySQL性能优化文章,期待你的关注!
欢迎关注个人微信公众号《andyqian》, 最近更新一系列MySQL性能优化文章,期待你的关注!
#5
重建索引后速度还行了, in改成 exists 效率也好多了,感谢楼上各位