去重运行慢

4000多条数据,5个字段,全字段去重为什么要运行180多秒啊,有什么其他方法可以去重吗微信截图_20210318142203.png

冰雨咖啡 发布于 2021-3-18 14:24
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
1
HHHHH123Lv7中级互助
发布于2021-3-18 15:08

首先distinct 改group by 其次,IN 里面的内容写在临时表里(大概率是这个原因)如果是oracle 可以参考我的这种写法,换成你IN里的内容,从临时表里IN或者关联临时表

SELECT 

REGEXP_SUBSTR(

'1,2,3,44,5'

, '[^,]+', 1, LEVEL, 'i') AS PLACE

FROM DUAL

CONNECT BY LEVEL <=5

最佳回答
0
snrtuemcLv8专家互助
发布于2021-3-18 14:28

你这是case when ,in语句,又是多表关联,又是嵌套查询,虽然出来4000多行,但是原数据估计不止,每个都可能拖慢运行速度

  • 冰雨咖啡 冰雨咖啡(提问者) 这段运行还是挺快的,2-3s之间,如果加distinct就很慢
    2021-03-18 14:30 
  • snrtuemc snrtuemc 回复 冰雨咖啡(提问者) 你就直接select distinct * from (你上面的语句) 试试
    2021-03-18 14:32 
最佳回答
0
祈LLv6中级互助
发布于2021-3-18 15:03

in匹配太多字符了,肯定是慢的,加上distinct,变拖拉机了,语句可以优化的,你可以试着减少in的个数或者不用distinct,很明显感受的出来

最佳回答
0
DylanHLv4见习互助
发布于2021-3-19 13:41

EXPLAIN sql语句看看

  • 5关注人数
  • 575浏览人数
  • 最后回答于:2021-3-19 13:41
    请选择关闭问题的原因
    确定 取消
    返回顶部