It should have same results by using [shuffle] or not, no need to worry about it.
-- 此致!Best Regards 陈明雨 Mingyu Chen Email: chenmin...@apache.org At 2021-09-01 18:02:09, "Thomas Cai" <thomas...@126.com> wrote: >Dear MingYu, > > > > >Great, it works. I did two changes as following: >At first, I changed a big table as left table then found an error (unknown >field a.producttype). I assumed it was related with partition. >Then, I added [Shuffle] join type on the table with the error message. The >result had the same number of records result as the initial SQL. > > > > >There is an additional question: Can I believe that the records are totally >the same with [Shuffle] join, or I have to verify the records of the new SQL? >Thanks. > > >Here is the modified SQL as following: >==================================== >SELECT > a.projectid, > a.ContractGUID, > c.CalID, > c.calperiod, > c.teamtype, > c.HKRatio, > d.MeasureMemberID, > e.producttype, > e.salestage, > e.commisionstage, > f.sequence >FROM yj_roompayment_doris c > JOIN yj_contractinfo_doris a ON > a.projectid = c.projectid > AND a.contractguid = c.contractguid > AND a.ContractType = c.ContractType > JOIN yj_salestage_doris b ON b.CalID = c.CalID > AND b.projectid = c.projectid > AND b.contractguid = c.contractguid > JOIN yj_measure_limit d ON d.CalID = c.CalID > AND d.projectid = c.projectid > AND d.SaleStage = b.SaleStage > AND d.producttype = a.producttype > AND c.ContractType = d.ContractType > AND c.HKRatio BETWEEN d.min AND d.max > JOIN [Shuffle] yj_paramrules e ON c.projectid = e.projectid > AND d.MeasureMemberID = e.MeasureMember > AND d.producttype = e.producttype > AND d.salestage = e.salestage > AND a.ContractType = e.ContractType > AND a.qsdate BETWEEN e.begindate AND e.enddate > JOIN yj_dimensionmember f ON e.commisionstage = f.memberid >WHERE > c.CalID = '898' > AND c.ProjectID = '26d614143fa73c16c4c8149455311e34' > AND c.CalPeriod = 'c709bdf3ff7da83e23e1a1fc1289b68e' > AND c.teamtype = 'ffab7099a45eb01583ea3b43faefad66' >====================================================== > > > > > >At 2021-09-01 13:06:57, "陈明雨" <morning...@163.com> wrote: >>You can refer to >>https://mp.weixin.qq.com/s/YNGdTbnG6iBjT1qtsK912w >> >> >>to see if it can help >> >> >> >>-- >> >>此致!Best Regards >>陈明雨 Mingyu Chen >> >>Email: >>chenmin...@apache.org >> >> >> >> >> >>At 2021-09-01 12:39:11, "Thomas Cai" <thomas...@126.com> wrote: >>>Dear All, >>> >>> >>>I am having the SQL execution performance issue. The followings are the SQL >>>and the result of SQL explain. But I have no ideas on how to tune the SQL to >>>improve. >>> >>> >>>Expect to receive your suggestions. Thanks. >>> >>> >>>Best Regards, >>>Thomas >>> >>> >>>=========SQL START================ >>>SELECT >>>a.projectid, >>>a.ContractGUID, >>>c.CalID, >>>c.calperiod, >>>c.teamtype, >>>c.HKRatio, >>>d.MeasureMemberID >>>FROM >>>yj_contractinfo_doris a >>>JOIN yj_salestage_doris b ON b.CalID = '898' and a.ProjectID = >>>'26d614143fa73c16c4c8149455311e34' >>>-- AND a.projectid = b.projectid >>>AND b.contractguid = a.contractguid >>>JOIN yj_roompayment_doris c ON c.calid = '898' >>>-- AND a.projectid = c.projectid >>>AND c.contractguid = a.contractguid >>>AND c.ContractType = a.ContractType >>>-- AND b.CalID = c.CalID >>>AND c.CalPeriod = 'c709bdf3ff7da83e23e1a1fc1289b68e' >>>AND c.teamtype = 'ffab7099a45eb01583ea3b43faefad66' >>>AND c.CalID = '898' >>>JOIN yj_measure_limit d ON d.CalID = '898' >>>AND d.projectid = a.projectid >>>AND d.producttype = a.producttype >>>AND d.SaleStage = b.SaleStage >>>AND d.ContractType = c.ContractType >>>AND c.HKRatio >=d.min and >>>c.HKRatio<= d.max >>>===========SQL END===================================== >>>Explain SQL Result as following: >>>===========EXPLAIN START================== >>>PLAN FRAGMENT 0 >>> OUTPUT EXPRS:`a`.`projectid` | `a`.`ContractGUID` | `c`.`CalID` | >>> `c`.`calperiod` | `c`.`teamtype` | `c`.`HKRatio` | `d`.`MeasureMemberID` >>> PARTITION: UNPARTITIONED >>> >>> >>> RESULT SINK >>> >>> >>> 10:EXCHANGE >>> tuple ids: 1 2 3 0 >>> >>> >>>PLAN FRAGMENT 1 >>> OUTPUT EXPRS: >>> PARTITION: RANDOM >>> >>> >>> STREAM DATA SINK >>> EXCHANGE ID: 10 >>> UNPARTITIONED >>> >>> >>> 6:HASH JOIN >>> | join op: INNER JOIN (BROADCAST) >>> | hash predicates: >>> | colocate: false, reason: left hash join node can not do colocate >>> | equal join conjunct: `b`.`contractguid` = `a`.`contractguid` >>> | equal join conjunct: `c`.`contractguid` = `a`.`contractguid` >>> | equal join conjunct: `c`.`ContractType` = `a`.`ContractType` >>> | equal join conjunct: `d`.`projectid` = `a`.`projectid` >>> | equal join conjunct: `d`.`producttype` = `a`.`producttype` >>> | tuple ids: 1 2 3 0 >>> | >>> |----9:EXCHANGE >>> | tuple ids: 0 >>> | >>> 4:HASH JOIN >>> | join op: INNER JOIN (BROADCAST) >>> | hash predicates: >>> | colocate: false, reason: Node type not match >>> | equal join conjunct: `b`.`SaleStage` = `d`.`SaleStage` >>> | equal join conjunct: `c`.`ContractType` = `d`.`ContractType` >>> | other predicates: `c`.`HKRatio` >= `d`.`min`, `c`.`HKRatio` <= `d`.`max` >>> | tuple ids: 1 2 3 >>> | >>> |----8:EXCHANGE >>> | tuple ids: 3 >>> | >>> 2:CROSS JOIN >>> | cross join: >>> | predicates is NULL. | tuple ids: 1 2 >>> | >>> |----7:EXCHANGE >>> | tuple ids: 2 >>> | >>> 0:OlapScanNode >>> TABLE: yj_salestage_doris >>> PREAGGREGATION: OFF. Reason: No AggregateInfo >>> PREDICATES: `b`.`CalID` = 898.0 >>> partitions=2/3 >>> rollup: yj_salestage_doris >>> tabletRatio=24/24 >>> tabletList=11523,11527,11531,11535,11539,11543,11547,11551,11555,11559 >>> ... >>> cardinality=1199149 >>> avgRowSize=21.937193 >>> numNodes=3 >>> tuple ids: 1 >>> >>> >>>PLAN FRAGMENT 2 >>> OUTPUT EXPRS: >>> PARTITION: RANDOM >>> >>> >>> STREAM DATA SINK >>> EXCHANGE ID: 09 >>> UNPARTITIONED >>> >>> >>> 5:OlapScanNode >>> TABLE: yj_contractinfo_doris >>> PREAGGREGATION: OFF. Reason: null >>> PREDICATES: `a`.`ProjectID` = '26d614143fa73c16c4c8149455311e34' >>> partitions=1/1 >>> rollup: yj_contractinfo_doris >>> tabletRatio=1/12 >>> tabletList=17970 >>> cardinality=6092 >>> avgRowSize=72.79629 >>> numNodes=3 >>> tuple ids: 0 >>> >>> >>>PLAN FRAGMENT 3 >>> OUTPUT EXPRS: >>> PARTITION: RANDOM >>> >>> >>> STREAM DATA SINK >>> EXCHANGE ID: 08 >>> UNPARTITIONED >>> >>> >>> 3:OlapScanNode >>> TABLE: yj_measure_limit >>> PREAGGREGATION: OFF. Reason: null >>> PREDICATES: `d`.`CalID` = 898.0 >>> partitions=1/3 >>> rollup: yj_measure_limit >>> tabletRatio=12/12 >>> tabletList=20658,20662,20666,20670,20674,20678,20682,20686,20690,20694 >>> ... >>> cardinality=90938 >>> avgRowSize=5.368526 >>> numNodes=3 >>> tuple ids: 3 >>> >>> >>>PLAN FRAGMENT 4 >>> OUTPUT EXPRS: >>> PARTITION: RANDOM >>> >>> >>> STREAM DATA SINK >>> EXCHANGE ID: 07 >>> UNPARTITIONED >>> >>> >>> 1:OlapScanNode >>> TABLE: yj_roompayment_doris >>> PREAGGREGATION: OFF. Reason: null >>> PREDICATES: `c`.`calid` = 898.0, `c`.`CalPeriod` = >>> 'c709bdf3ff7da83e23e1a1fc1289b68e', `c`.`teamtype` = >>> 'ffab7099a45eb01583ea3b43faefad66', `c`.`CalID` = 898.0 >>> partitions=2/3 >>> rollup: yj_roompayment_doris >>> tabletRatio=24/24 >>> tabletList=13675,13679,13683,13687,13691,13695,13699,13703,13707,13711 >>> ... >>> cardinality=503798 >>> avgRowSize=52.880646 >>> numNodes=3 >>> tuple ids: 2 >>>===========EXPLAIN END============================