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============================

Reply via email to