4000多条数据,5个字段,全字段去重为什么要运行180多秒啊,有什么其他方法可以去重吗
首先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
你这是case when ,in语句,又是多表关联,又是嵌套查询,虽然出来4000多行,但是原数据估计不止,每个都可能拖慢运行速度
in匹配太多字符了,肯定是慢的,加上distinct,变拖拉机了,语句可以优化的,你可以试着减少in的个数或者不用distinct,很明显感受的出来
EXPLAIN sql语句看看