|
|
|
|
@ -5468,19 +5468,24 @@ IndexMergeJoin 4.69 root inner join, inner:Projection, outer key:planner__core_
|
|
|
|
|
└─TableRowIDScan(Probe) 4.69 cop[tikv] table:t2 keep order:false, stats:pseudo
|
|
|
|
|
explain format = 'brief' select /*+ leading(t2, t3@sel_2) */ * from t1 join t2 on t1.a=t2.a where t1.a in (select t3.a from t3);
|
|
|
|
|
id estRows task access object operator info
|
|
|
|
|
Projection 37462.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t2.b
|
|
|
|
|
└─HashJoin 37462.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a) eq(planner__core__casetest__rule__rule_join_reorder.t3.a, planner__core__casetest__rule__rule_join_reorder.t1.a)]
|
|
|
|
|
├─TableReader(Build) 9990.00 root data:Selection
|
|
|
|
|
│ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a))
|
|
|
|
|
│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo
|
|
|
|
|
└─HashJoin(Probe) 29970.00 root CARTESIAN inner join
|
|
|
|
|
├─StreamAgg(Build) 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.a, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.a)->planner__core__casetest__rule__rule_join_reorder.t3.a
|
|
|
|
|
│ └─IndexReader 3.00 root index:StreamAgg
|
|
|
|
|
│ └─StreamAgg 3.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.a,
|
|
|
|
|
│ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:true
|
|
|
|
|
└─TableReader(Probe) 9990.00 root data:Selection
|
|
|
|
|
└─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a))
|
|
|
|
|
└─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo
|
|
|
|
|
IndexMergeJoin 4.69 root inner join, inner:Projection, outer key:planner__core__casetest__rule__rule_join_reorder.t1.a, inner key:planner__core__casetest__rule__rule_join_reorder.t2.a
|
|
|
|
|
├─IndexMergeJoin(Build) 3.75 root inner join, inner:Projection, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a
|
|
|
|
|
│ ├─StreamAgg(Build) 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.a, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.a)->planner__core__casetest__rule__rule_join_reorder.t3.a
|
|
|
|
|
│ │ └─IndexReader 3.00 root index:StreamAgg
|
|
|
|
|
│ │ └─StreamAgg 3.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.a,
|
|
|
|
|
│ │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:true
|
|
|
|
|
│ └─Projection(Probe) 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b
|
|
|
|
|
│ └─IndexLookUp 3.75 root
|
|
|
|
|
│ ├─Selection(Build) 3.75 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a))
|
|
|
|
|
│ │ └─IndexRangeScan 3.75 cop[tikv] table:t1, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)], keep order:true, stats:pseudo
|
|
|
|
|
│ └─TableRowIDScan(Probe) 3.75 cop[tikv] table:t1 keep order:false, stats:pseudo
|
|
|
|
|
└─Projection(Probe) 4.69 root planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t2.b
|
|
|
|
|
└─IndexLookUp 4.69 root
|
|
|
|
|
├─Selection(Build) 4.69 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a))
|
|
|
|
|
│ └─IndexRangeScan 4.69 cop[tikv] table:t2, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a)], keep order:true, stats:pseudo
|
|
|
|
|
└─TableRowIDScan(Probe) 4.69 cop[tikv] table:t2 keep order:false, stats:pseudo
|
|
|
|
|
Level Code Message
|
|
|
|
|
Warning 1815 We can only use one leading hint at most, when multiple leading hints are used, all leading hints will be invalid
|
|
|
|
|
explain format = 'brief' select /*+ leading(t1, t3@sel_2) */ * from t1 join t2 on t1.a=t2.a where t1.a in (select t3.a from t3);
|
|
|
|
|
id estRows task access object operator info
|
|
|
|
|
IndexMergeJoin 4.69 root inner join, inner:Projection, outer key:planner__core__casetest__rule__rule_join_reorder.t1.a, inner key:planner__core__casetest__rule__rule_join_reorder.t2.a
|
|
|
|
|
@ -5499,21 +5504,28 @@ IndexMergeJoin 4.69 root inner join, inner:Projection, outer key:planner__core_
|
|
|
|
|
├─Selection(Build) 4.69 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a))
|
|
|
|
|
│ └─IndexRangeScan 4.69 cop[tikv] table:t2, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a)], keep order:true, stats:pseudo
|
|
|
|
|
└─TableRowIDScan(Probe) 4.69 cop[tikv] table:t2 keep order:false, stats:pseudo
|
|
|
|
|
Level Code Message
|
|
|
|
|
Warning 1815 We can only use one leading hint at most, when multiple leading hints are used, all leading hints will be invalid
|
|
|
|
|
explain format = 'brief' select /*+ leading(t3@sel_2, t2) */ * from t1 join t2 on t1.a=t2.a where t1.a in (select t3.a from t3);
|
|
|
|
|
id estRows task access object operator info
|
|
|
|
|
Projection 37462.50 root planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t2.b
|
|
|
|
|
└─HashJoin 37462.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a) eq(planner__core__casetest__rule__rule_join_reorder.t3.a, planner__core__casetest__rule__rule_join_reorder.t1.a)]
|
|
|
|
|
├─TableReader(Build) 9990.00 root data:Selection
|
|
|
|
|
│ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a))
|
|
|
|
|
│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo
|
|
|
|
|
└─HashJoin(Probe) 29970.00 root CARTESIAN inner join
|
|
|
|
|
├─StreamAgg(Build) 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.a, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.a)->planner__core__casetest__rule__rule_join_reorder.t3.a
|
|
|
|
|
│ └─IndexReader 3.00 root index:StreamAgg
|
|
|
|
|
│ └─StreamAgg 3.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.a,
|
|
|
|
|
│ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:true
|
|
|
|
|
└─TableReader(Probe) 9990.00 root data:Selection
|
|
|
|
|
└─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a))
|
|
|
|
|
└─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo
|
|
|
|
|
IndexMergeJoin 4.69 root inner join, inner:Projection, outer key:planner__core__casetest__rule__rule_join_reorder.t1.a, inner key:planner__core__casetest__rule__rule_join_reorder.t2.a
|
|
|
|
|
├─IndexMergeJoin(Build) 3.75 root inner join, inner:Projection, outer key:planner__core__casetest__rule__rule_join_reorder.t3.a, inner key:planner__core__casetest__rule__rule_join_reorder.t1.a
|
|
|
|
|
│ ├─StreamAgg(Build) 3.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.a, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.a)->planner__core__casetest__rule__rule_join_reorder.t3.a
|
|
|
|
|
│ │ └─IndexReader 3.00 root index:StreamAgg
|
|
|
|
|
│ │ └─StreamAgg 3.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.a,
|
|
|
|
|
│ │ └─IndexFullScan 3.00 cop[tikv] table:t3, index:a(a) keep order:true
|
|
|
|
|
│ └─Projection(Probe) 3.75 root planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b
|
|
|
|
|
│ └─IndexLookUp 3.75 root
|
|
|
|
|
│ ├─Selection(Build) 3.75 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a))
|
|
|
|
|
│ │ └─IndexRangeScan 3.75 cop[tikv] table:t1, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)], keep order:true, stats:pseudo
|
|
|
|
|
│ └─TableRowIDScan(Probe) 3.75 cop[tikv] table:t1 keep order:false, stats:pseudo
|
|
|
|
|
└─Projection(Probe) 4.69 root planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t2.b
|
|
|
|
|
└─IndexLookUp 4.69 root
|
|
|
|
|
├─Selection(Build) 4.69 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a))
|
|
|
|
|
│ └─IndexRangeScan 4.69 cop[tikv] table:t2, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a)], keep order:true, stats:pseudo
|
|
|
|
|
└─TableRowIDScan(Probe) 4.69 cop[tikv] table:t2 keep order:false, stats:pseudo
|
|
|
|
|
Level Code Message
|
|
|
|
|
Warning 1815 We can only use one leading hint at most, when multiple leading hints are used, all leading hints will be invalid
|
|
|
|
|
explain format = 'brief' select /*+ leading(t3@sel_2, t1) */ * from t1 join t2 on t1.a=t2.a where t1.a in (select t3.a from t3);
|
|
|
|
|
id estRows task access object operator info
|
|
|
|
|
IndexMergeJoin 4.69 root inner join, inner:Projection, outer key:planner__core__casetest__rule__rule_join_reorder.t1.a, inner key:planner__core__casetest__rule__rule_join_reorder.t2.a
|
|
|
|
|
@ -5532,6 +5544,8 @@ IndexMergeJoin 4.69 root inner join, inner:Projection, outer key:planner__core_
|
|
|
|
|
├─Selection(Build) 4.69 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a))
|
|
|
|
|
│ └─IndexRangeScan 4.69 cop[tikv] table:t2, index:a(a) range: decided by [eq(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a)], keep order:true, stats:pseudo
|
|
|
|
|
└─TableRowIDScan(Probe) 4.69 cop[tikv] table:t2 keep order:false, stats:pseudo
|
|
|
|
|
Level Code Message
|
|
|
|
|
Warning 1815 We can only use one leading hint at most, when multiple leading hints are used, all leading hints will be invalid
|
|
|
|
|
explain format = 'brief' select /*+ leading(t4) */ * from t1 join t2 on t1.a=t2.a join t4 on t1.b = t4.b where t1.a not in (select t3.a from t3);
|
|
|
|
|
id estRows task access object operator info
|
|
|
|
|
HashJoin 12475.01 root Null-aware anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)]
|
|
|
|
|
@ -7143,19 +7157,20 @@ HashJoin 12487.50 root left outer join, equal:[eq(planner__core__casetest__rule
|
|
|
|
|
└─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo
|
|
|
|
|
explain format = 'brief' select /*+ leading(t2, t3@sel_2) */ * from t1 join t2 on t1.a=t2.a where t1.a in (select t3.a from t3);
|
|
|
|
|
id estRows task access object operator info
|
|
|
|
|
Projection 99800100.00 root planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t1.b, planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t2.b
|
|
|
|
|
└─HashJoin 99800100.00 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t2.a, planner__core__casetest__rule__rule_join_reorder.t1.a) eq(planner__core__casetest__rule__rule_join_reorder.t3.a, planner__core__casetest__rule__rule_join_reorder.t1.a)]
|
|
|
|
|
HashJoin 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)]
|
|
|
|
|
├─StreamAgg(Build) 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.a, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.a)->planner__core__casetest__rule__rule_join_reorder.t3.a
|
|
|
|
|
│ └─IndexReader 7992.00 root index:StreamAgg
|
|
|
|
|
│ └─StreamAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.a,
|
|
|
|
|
│ └─IndexFullScan 9990.00 cop[tikv] table:t3, index:a(a) keep order:true, stats:pseudo
|
|
|
|
|
└─HashJoin(Probe) 12487.50 root inner join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t2.a)]
|
|
|
|
|
├─TableReader(Build) 9990.00 root data:Selection
|
|
|
|
|
│ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a))
|
|
|
|
|
│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo
|
|
|
|
|
└─HashJoin(Probe) 79840080.00 root CARTESIAN inner join
|
|
|
|
|
├─StreamAgg(Build) 7992.00 root group by:planner__core__casetest__rule__rule_join_reorder.t3.a, funcs:firstrow(planner__core__casetest__rule__rule_join_reorder.t3.a)->planner__core__casetest__rule__rule_join_reorder.t3.a
|
|
|
|
|
│ └─IndexReader 7992.00 root index:StreamAgg
|
|
|
|
|
│ └─StreamAgg 7992.00 cop[tikv] group by:planner__core__casetest__rule__rule_join_reorder.t3.a,
|
|
|
|
|
│ └─IndexFullScan 9990.00 cop[tikv] table:t3, index:a(a) keep order:true, stats:pseudo
|
|
|
|
|
└─TableReader(Probe) 9990.00 root data:Selection
|
|
|
|
|
└─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a))
|
|
|
|
|
└─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo
|
|
|
|
|
│ └─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t2.a))
|
|
|
|
|
│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo
|
|
|
|
|
└─TableReader(Probe) 9990.00 root data:Selection
|
|
|
|
|
└─Selection 9990.00 cop[tikv] not(isnull(planner__core__casetest__rule__rule_join_reorder.t1.a))
|
|
|
|
|
└─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo
|
|
|
|
|
Level Code Message
|
|
|
|
|
Warning 1815 We can only use one leading hint at most, when multiple leading hints are used, all leading hints will be invalid
|
|
|
|
|
explain format = 'brief' select /*+ leading(t4) */ * from t1 left join t2 on t1.a=t2.a right join t4 on t1.b = t4.b where t1.a not in (select t3.a from t3);
|
|
|
|
|
id estRows task access object operator info
|
|
|
|
|
HashJoin 12487.50 root Null-aware anti semi join, equal:[eq(planner__core__casetest__rule__rule_join_reorder.t1.a, planner__core__casetest__rule__rule_join_reorder.t3.a)]
|
|
|
|
|
|