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