Doris版本信息:2.1.3
Version: doris-2.1.3-rc09-2dc65ce356
复现语句:
SELECT DISTINCT A.PROD_INST_ID, D.K_PROD_INST_ID, C.KD_CJ FROM 表2 A LEFT JOIN (SELECT PROD_INST_ID,GROUP_PROD_INST_ID,IS_ALL_PRD_OFFER FROM 表1 WHERE P_MON_ID=202405) B ON A.PROD_INST_ID =B.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,K_PROD_INST_ID FROM 表1 WHERE P_MON_ID=202311)D ON B.GROUP_PROD_INST_ID=D.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,CASE WHEN SUBSTR(ORDER_REMOVE_DATE,1,4)<>2030 THEN 1 ELSE 0 END AS KD_CJ FROM 表1 WHERE P_MON_ID=202312) C ON D.K_PROD_INST_ID=C.PROD_INST_ID WHERE A.P_DAY_ID=20231231 AND FLAG_ID=2 AND SUBSTR(A.IN_OUT_DATE,1,8) BETWEEN 20231201 AND 20231231 AND B.IS_ALL_PRD_OFFER<>0 UNION ALL SELECT DISTINCT A.PROD_INST_ID, D.K_PROD_INST_ID, C.KD_CJ FROM 表2 A LEFT JOIN (SELECT PROD_INST_ID,GROUP_PROD_INST_ID,IS_ALL_PRD_OFFER FROM 表1 WHERE P_MON_ID=202310) B ON A.PROD_INST_ID =B.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,K_PROD_INST_ID FROM 表1 WHERE P_MON_ID=202310)D ON B.GROUP_PROD_INST_ID=D.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,CASE WHEN SUBSTR(ORDER_REMOVE_DATE,1,4)<>2030 THEN 1 ELSE 0 END AS KD_CJ FROM 表1 WHERE P_MON_ID=202311) C ON D.K_PROD_INST_ID=C.PROD_INST_ID WHERE A.P_DAY_ID=20231231 AND FLAG_ID=2 AND SUBSTR(A.IN_OUT_DATE,1,8) BETWEEN 20231101 AND 20231130 AND B.IS_ALL_PRD_OFFER<>0 UNION ALL SELECT DISTINCT A.PROD_INST_ID, D.K_PROD_INST_ID, C.KD_CJ FROM 表2 A LEFT JOIN (SELECT PROD_INST_ID,GROUP_PROD_INST_ID,IS_ALL_PRD_OFFER FROM 表1 WHERE P_MON_ID=202309) B ON A.PROD_INST_ID =B.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,K_PROD_INST_ID FROM 表1 WHERE P_MON_ID=202309)D ON B.GROUP_PROD_INST_ID=D.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,CASE WHEN SUBSTR(ORDER_REMOVE_DATE,1,4)<>2030 THEN 1 ELSE 0 END AS KD_CJ FROM 表1 WHERE P_MON_ID=202310) C ON D.K_PROD_INST_ID=C.PROD_INST_ID WHERE A.P_DAY_ID=20231231 AND FLAG_ID=2 AND SUBSTR(A.IN_OUT_DATE,1,8) BETWEEN 20231001 AND 20231031 AND B.IS_ALL_PRD_OFFER<>0 UNION ALL SELECT DISTINCT A.PROD_INST_ID, D.K_PROD_INST_ID, C.KD_CJ FROM 表2 A LEFT JOIN (SELECT PROD_INST_ID,GROUP_PROD_INST_ID,IS_ALL_PRD_OFFER FROM 表1 WHERE P_MON_ID=202308) B ON A.PROD_INST_ID =B.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,K_PROD_INST_ID FROM 表1 WHERE P_MON_ID=202308)D ON B.GROUP_PROD_INST_ID=D.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,CASE WHEN SUBSTR(ORDER_REMOVE_DATE,1,4)<>2030 THEN 1 ELSE 0 END AS KD_CJ FROM 表1 WHERE P_MON_ID=202309) C ON D.K_PROD_INST_ID=C.PROD_INST_ID WHERE A.P_DAY_ID=20231231 AND FLAG_ID=2 AND SUBSTR(A.IN_OUT_DATE,1,8) BETWEEN 20230901 AND 20230930 AND B.IS_ALL_PRD_OFFER<>0 UNION ALL SELECT DISTINCT A.PROD_INST_ID, D.K_PROD_INST_ID, C.KD_CJ FROM 表2 A LEFT JOIN (SELECT PROD_INST_ID,GROUP_PROD_INST_ID,IS_ALL_PRD_OFFER FROM 表1 WHERE P_MON_ID=202307) B ON A.PROD_INST_ID =B.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,K_PROD_INST_ID FROM 表1 WHERE P_MON_ID=202307)D ON B.GROUP_PROD_INST_ID=D.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,CASE WHEN SUBSTR(ORDER_REMOVE_DATE,1,4)<>2030 THEN 1 ELSE 0 END AS KD_CJ FROM 表1 WHERE P_MON_ID=202308) C ON D.K_PROD_INST_ID=C.PROD_INST_ID WHERE A.P_DAY_ID=20231231 AND FLAG_ID=2 AND SUBSTR(A.IN_OUT_DATE,1,8) BETWEEN 20230801 AND 20230831 AND B.IS_ALL_PRD_OFFER<>0 UNION ALL SELECT DISTINCT A.PROD_INST_ID, D.K_PROD_INST_ID, C.KD_CJ FROM 表2 A LEFT JOIN (SELECT PROD_INST_ID,GROUP_PROD_INST_ID,IS_ALL_PRD_OFFER FROM 表1 WHERE P_MON_ID=202306) B ON A.PROD_INST_ID =B.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,K_PROD_INST_ID FROM 表1 WHERE P_MON_ID=202306)D ON B.GROUP_PROD_INST_ID=D.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,CASE WHEN SUBSTR(ORDER_REMOVE_DATE,1,4)<>2030 THEN 1 ELSE 0 END AS KD_CJ FROM 表1 WHERE P_MON_ID=202307) C ON D.K_PROD_INST_ID=C.PROD_INST_ID WHERE A.P_DAY_ID=20231231 AND FLAG_ID=2 AND SUBSTR(A.IN_OUT_DATE,1,8) BETWEEN 20230701 AND 20230731 AND B.IS_ALL_PRD_OFFER<>0 UNION ALL SELECT DISTINCT A.PROD_INST_ID, D.K_PROD_INST_ID, C.KD_CJ FROM 表2 A LEFT JOIN (SELECT PROD_INST_ID,GROUP_PROD_INST_ID,IS_ALL_PRD_OFFER FROM 表1 WHERE P_MON_ID=202305) B ON A.PROD_INST_ID =B.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,K_PROD_INST_ID FROM 表1 WHERE P_MON_ID=202305)D ON B.GROUP_PROD_INST_ID=D.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,CASE WHEN SUBSTR(ORDER_REMOVE_DATE,1,4)<>2030 THEN 1 ELSE 0 END AS KD_CJ FROM 表1 WHERE P_MON_ID=202306) C ON D.K_PROD_INST_ID=C.PROD_INST_ID WHERE A.P_DAY_ID=20231231 AND FLAG_ID=2 AND SUBSTR(A.IN_OUT_DATE,1,8) BETWEEN 20230601 AND 20230630 AND B.IS_ALL_PRD_OFFER<>0 UNION ALL SELECT DISTINCT A.PROD_INST_ID, D.K_PROD_INST_ID, C.KD_CJ FROM 表2 A LEFT JOIN (SELECT PROD_INST_ID,GROUP_PROD_INST_ID,IS_ALL_PRD_OFFER FROM 表1 WHERE P_MON_ID=202304) B ON A.PROD_INST_ID =B.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,K_PROD_INST_ID FROM 表1 WHERE P_MON_ID=202304)D ON B.GROUP_PROD_INST_ID=D.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,CASE WHEN SUBSTR(ORDER_REMOVE_DATE,1,4)<>2030 THEN 1 ELSE 0 END AS KD_CJ FROM 表1 WHERE P_MON_ID=202305) C ON D.K_PROD_INST_ID=C.PROD_INST_ID WHERE A.P_DAY_ID=20231231 AND FLAG_ID=2 AND SUBSTR(A.IN_OUT_DATE,1,8) BETWEEN 20230501 AND 20230531 AND B.IS_ALL_PRD_OFFER<>0 UNION ALL SELECT DISTINCT A.PROD_INST_ID, D.K_PROD_INST_ID, C.KD_CJ FROM 表2 A LEFT JOIN (SELECT PROD_INST_ID,GROUP_PROD_INST_ID,IS_ALL_PRD_OFFER FROM 表1 WHERE P_MON_ID=202303) B ON A.PROD_INST_ID =B.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,K_PROD_INST_ID FROM 表1 WHERE P_MON_ID=202303)D ON B.GROUP_PROD_INST_ID=D.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,CASE WHEN SUBSTR(ORDER_REMOVE_DATE,1,4)<>2030 THEN 1 ELSE 0 END AS KD_CJ FROM 表1 WHERE P_MON_ID=202304) C ON D.K_PROD_INST_ID=C.PROD_INST_ID WHERE A.P_DAY_ID=20231231 AND FLAG_ID=2 AND SUBSTR(A.IN_OUT_DATE,1,8) BETWEEN 20230401 AND 20230430 AND B.IS_ALL_PRD_OFFER<>0 UNION ALL SELECT DISTINCT A.PROD_INST_ID, D.K_PROD_INST_ID, C.KD_CJ FROM 表2 A LEFT JOIN (SELECT PROD_INST_ID,GROUP_PROD_INST_ID,IS_ALL_PRD_OFFER FROM 表1 WHERE P_MON_ID=202302) B ON A.PROD_INST_ID =B.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,K_PROD_INST_ID FROM 表1 WHERE P_MON_ID=202302)D ON B.GROUP_PROD_INST_ID=D.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,CASE WHEN SUBSTR(ORDER_REMOVE_DATE,1,4)<>2030 THEN 1 ELSE 0 END AS KD_CJ FROM 表1 WHERE P_MON_ID=202303) C ON D.K_PROD_INST_ID=C.PROD_INST_ID WHERE A.P_DAY_ID=20231231 AND FLAG_ID=2 AND SUBSTR(A.IN_OUT_DATE,1,8) BETWEEN 20230301 AND 20230331 AND B.IS_ALL_PRD_OFFER<>0 UNION ALL SELECT DISTINCT A.PROD_INST_ID, D.K_PROD_INST_ID, C.KD_CJ FROM 表2 A LEFT JOIN (SELECT PROD_INST_ID,GROUP_PROD_INST_ID,IS_ALL_PRD_OFFER FROM 表1 WHERE P_MON_ID=202301) B ON A.PROD_INST_ID =B.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,K_PROD_INST_ID FROM 表1 WHERE P_MON_ID=202301)D ON B.GROUP_PROD_INST_ID=D.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,CASE WHEN SUBSTR(ORDER_REMOVE_DATE,1,4)<>2030 THEN 1 ELSE 0 END AS KD_CJ FROM 表1 WHERE P_MON_ID=202302) C ON D.K_PROD_INST_ID=C.PROD_INST_ID WHERE A.P_DAY_ID=20231231 AND FLAG_ID=2 AND SUBSTR(A.IN_OUT_DATE,1,8) BETWEEN 20230201 AND 20230228 AND B.IS_ALL_PRD_OFFER<>0 UNION ALL SELECT DISTINCT A.PROD_INST_ID, D.K_PROD_INST_ID, C.KD_CJ FROM 表2 A LEFT JOIN (SELECT PROD_INST_ID,GROUP_PROD_INST_ID,IS_ALL_PRD_OFFER FROM 表1 WHERE P_MON_ID=202212) B ON A.PROD_INST_ID =B.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,K_PROD_INST_ID FROM 表1 WHERE P_MON_ID=202212)D ON B.GROUP_PROD_INST_ID=D.PROD_INST_ID LEFT JOIN (SELECT PROD_INST_ID,CASE WHEN SUBSTR(ORDER_REMOVE_DATE,1,4)<>2030 THEN 1 ELSE 0 END AS KD_CJ FROM 表1 WHERE P_MON_ID=202301) C ON D.K_PROD_INST_ID=C.PROD_INST_ID WHERE A.P_DAY_ID=20231231 AND FLAG_ID=2 AND SUBSTR(A.IN_OUT_DATE,1,8) BETWEEN 20230101 AND 20230131 AND B.IS_ALL_PRD_OFFER<>0;
问题描述:
在之前版本这条SQL都能跑出来,在2.1.3版本默认使用Nereids优化器后,会报Nereids cost too much time的问题:
调大nereids_timeout_second为60S、90S后,依旧会报超时的问题:
关闭Nereids优化器后可以正常跑出来。
另附上该用户workload_group的配置:
Nereids相关配置:
烦请专家指导,感激不尽!