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