30 lines
1.8 KiB
Plaintext
30 lines
1.8 KiB
Plaintext
drop table if exists t1;
|
|
drop table if exists t2;
|
|
create table t1(a bigint, b bigint);
|
|
create table t2(a bigint, b bigint);
|
|
set session tidb_hashagg_partial_concurrency = 1;
|
|
set session tidb_hashagg_final_concurrency = 1;
|
|
explain select * from t1 where t1.a in (select t1.b + t2.b from t2);
|
|
id count task operator info
|
|
HashLeftJoin_8 8000.00 root CARTESIAN semi join, inner:TableReader_12, other cond:eq(test.t1.a, plus(test.t1.b, test.t2.b))
|
|
├─TableReader_10 10000.00 root data:TableScan_9
|
|
│ └─TableScan_9 10000.00 cop table:t1, range:[-inf,+inf], keep order:false, stats:pseudo
|
|
└─TableReader_12 10000.00 root data:TableScan_11
|
|
└─TableScan_11 10000.00 cop table:t2, range:[-inf,+inf], keep order:false, stats:pseudo
|
|
drop table if exists t;
|
|
create table t(a int primary key, b int, c int, d int, index idx(b,c,d));
|
|
insert into t values(1,1,1,1),(2,2,2,2),(3,2,2,2),(4,2,2,2),(5,2,2,2);
|
|
analyze table t;
|
|
explain select t.c in (select count(*) from t s use index(idx), t t1 where s.b = 1 and s.c = 1 and s.d = t.a and s.a = t1.a) from t;
|
|
id count task operator info
|
|
Projection_11 5.00 root 9_aux_0
|
|
└─Apply_13 5.00 root CARTESIAN left outer semi join, inner:StreamAgg_20, other cond:eq(test.t.c, 7_col_0)
|
|
├─TableReader_15 5.00 root data:TableScan_14
|
|
│ └─TableScan_14 5.00 cop table:t, range:[-inf,+inf], keep order:false
|
|
└─StreamAgg_20 1.00 root funcs:count(1)
|
|
└─IndexJoin_23 0.50 root inner join, inner:TableReader_22, outer key:test.s.a, inner key:test.t1.a
|
|
├─IndexReader_27 1.00 root index:IndexScan_26
|
|
│ └─IndexScan_26 1.00 cop table:s, index:b, c, d, range: decided by [eq(test.s.b, 1) eq(test.s.c, 1) eq(test.s.d, test.t.a)], keep order:false
|
|
└─TableReader_22 1.00 root data:TableScan_21
|
|
└─TableScan_21 1.00 cop table:t1, range: decided by [test.s.a], keep order:false
|