set sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; set @@session.tidb_enable_inl_join_inner_multi_pattern='ON'; create table tbl_1 ( col_1 varbinary ( 507 ) ,col_2 bigint unsigned ,col_3 double not null default 6954.1407428587745 ,col_4 time not null default '23:28:14.00' ,col_5 varchar ( 142 ) collate gbk_chinese_ci not null ,col_6 date not null default '2036-08-30' , unique key idx_1 ( col_2 ,col_3 ) ,primary key ( col_2 ,col_5 ) /*T![clustered_index] nonclustered */ ) ; create table tbl_2 ( col_7 blob ( 210 ) , primary key ( col_7 ( 4 ) ) /*T![clustered_index] clustered */ ,key idx_4 ( col_7 ( 2 ) ) ) ; create table tbl_3 ( col_8 enum ( 'Alice','Bob','Charlie','David' ) not null ,col_9 date not null ,col_10 varchar ( 8 ) ,col_11 datetime not null default '1990-05-14' ,col_12 double not null ,col_13 timestamp default '1972-12-17' ,col_14 blob ( 403 ) ,col_15 binary ( 171 ) ) ; create table tbl_4 ( col_16 text ( 315 ) collate utf8_general_ci ,col_17 set ( 'Alice','Bob','Charlie','David' ) , unique key idx_5 ( col_16 ( 5 ) ,col_17 ) ) ; create table tbl_5 ( col_18 enum ( 'Alice','Bob','Charlie','David' ) ,col_19 decimal ( 59 , 26 ) ,col_20 float ,col_21 bigint unsigned default null ,col_22 enum ( 'Alice','Bob','Charlie','David' ) not null default 'Bob' ,col_23 date default '2015-07-31' ,col_24 year not null default '2031' ,col_25 timestamp ,col_26 float not null default 8858.116075156599 , key idx_6 ( col_25 ,col_19 ) ,key idx_7 ( col_23 ,col_25 ,col_26 ) ) ; create table tbl_6 ( col_27 bit ( 23 ) ,col_28 text ( 503 ) ,col_29 mediumint unsigned default 9221994 ,col_30 datetime ,col_31 varchar ( 161 ) collate utf8_unicode_ci not null default 'o5Hz' ,col_32 tinyint default -85 ,col_33 float not null ,col_34 double ,col_35 char ( 10 ) default '8HfYd9U#' , primary key ( col_32 ,col_30 ) /*T![clustered_index] nonclustered */ ,unique key idx_9 ( col_32 ,col_35 ,col_33 ) ,key idx_10 ( col_27 ,col_31 ,col_34 ) ,unique key idx_11 ( col_32 ) ) ; create table tbl_7 ( col_36 timestamp not null default '1977-04-01' , unique key idx_12 ( col_36 ) ,key idx_13 ( col_36 ) ) ; create table tbl_8 ( col_37 time ,col_38 datetime not null ,col_39 blob ( 373 ) not null ,col_40 json not null ,col_41 smallint not null ,col_42 text ( 122 ) collate utf8_general_ci not null , primary key ( col_41 ,col_39 ( 1 ) ) /*T![clustered_index] nonclustered */ ,key idx_15 ( col_42 ( 5 ) ) ) ; create table tbl_9 ( col_43 double ,col_44 char ( 20 ) collate utf8mb4_bin not null ,col_45 double default 9426.846297911621 ,col_46 char ( 43 ) collate gbk_chinese_ci not null default 'w覾8臈hY7皚*囩&钿Nt' ,col_47 datetime ,col_48 set ( 'Alice','Bob','Charlie','David' ) ,col_49 timestamp ,col_50 char ( 229 ) collate utf8_general_ci not null default '8TVWvN^~9@phP0bP' ,col_51 double , primary key ( col_47 ,col_51 ,col_44 ) /*T![clustered_index] nonclustered */ ,unique key idx_17 ( col_51 ,col_45 ,col_46 ) ,key idx_18 ( col_44 ( 4 ) ,col_43 ) ,unique key idx_19 ( col_47 ,col_46 ,col_45 ) ) ; create table tbl_10 ( col_52 text ( 73 ) collate gbk_bin not null ) ; insert into tbl_1 values ( 'l*GO',4916892694522258530,4734.163053758499,'22:26:04.00','L傪N','1980-05-20' ); insert into tbl_1 values ( '',4057851348865078666,8205.436991378469,'01:44:13.00','P旂哒2z','2004-08-10' ); insert into tbl_1 values ( 'H5OJS6',5811458887902797410,9132.911812156843,'08:03:09.00','#牚1匼鎋騐蜿','1987-04-13' ); insert into tbl_2 values ( 'Q!~MQYmQHOzR8' ); insert into tbl_2 values ( '4' ); insert into tbl_2 values ( 'fil7b' ); insert into tbl_3 values ( 'Bob','2000-04-08','','2027-01-11',1894.2730609181076,'2013-04-23','G16+h','' ); insert into tbl_3 values ( 'David','1983-03-24','XlCNY@I','2020-08-08',5350.568097976004,'2017-04-19','YR','Hcu$' ); insert into tbl_3 values ( 'Bob','1987-08-31','5&','2006-07-07',8214.117448251309,'2009-07-18','sx7^!kH#5GN(n5','sj&Y9(I' ); insert into tbl_4 values ( 'B!k8k0pCBS9TGWB5wd2','David' ); insert into tbl_4 values ( 'EmWPH5cZQK','Charlie' ); insert into tbl_4 values ( 'Rt!%(','Bob' ); insert into tbl_5 values ( 'Bob',1774.744,4845.724488889261,227835370555924295,'David','2032-02-14','1998','2033-05-23',1548.0831584462285 ); insert into tbl_5 values ( 'Bob',9.62,3828.2054531232857,6879334440958556113,'David','2033-10-12','1977','2031-09-19',3337.723478735462 ); insert into tbl_5 values ( 'Alice',998.305,4012.2962474153346,4144612761158097044,'Bob','1995-02-03','2023','1988-10-26',9853.04201521377 ); insert into tbl_6 values ( 5386445,'*v-z@X',11106034,'2010-04-28','3*76V!b=ww&axvb',-16,8329.251590378599,9696.467898018307,'s' ); insert into tbl_6 values ( 5270258,'$F4C6WAyfgi$9I(',11911216,'1983-02-17','S66gwsl0slQu_ix',100,6429.254394299676,3622.4423126156184,'' ); insert into tbl_6 values ( 3801463,'M1#bjS*@kp',null,'2009-05-31','!@(=#VP',15,6771.7779127853155,1913.2000927110957,'@O~3Ywv' ); insert into tbl_7 values ( '1992-06-13' ); insert into tbl_7 values ( '1994-04-24' ); insert into tbl_7 values ( '1989-01-16' ); insert into tbl_8 values ( '05:35:02.00','1980-08-10','b85VVr',"-22",-31604,'KDEAP57%' ); insert into tbl_8 values ( '02:10:52.00','2022-04-30','5',"323232323.3232323232",162,'WqvBAzNm0JM' ); insert into tbl_8 values ( '10:33:58.00','2030-08-17','$W~hkFd0)1z',"66",28728,'%' ); insert into tbl_9 values ( 7257.848250668678,'#)-n$c7W',8506.985523174764,'趷1w0K5Q睇(龔9覫xhCkX%H','1980-09-23','Bob','2012-01-12','Yg)Fr(dZXB',2980.0838681549826 ); insert into tbl_9 values ( 7100.241665472305,'xXk!X',6942.369912096654,'閯豵忎邱ubI','1980-05-03','Charlie','1982-10-03','guc~Pu)YTt',9796.640617804795 ); insert into tbl_9 values ( 1062.243530285914,'gYl#BS!',7146.287430209328,'啓BY伒Vwe频嘏辳愒','1986-12-31','Bob','1992-02-09','vs)=Vn3FB-',6880.2222327587415 ); insert into tbl_10 values ( 't文髻=CXo檽睙F=团4鴶)瘃观' ); insert into tbl_10 values ( '' ); insert into tbl_10 values ( '' ); explain select /*+ inl_join( tbl_4 , tbl_10 ) */ tbl_10.col_52 as r0 , character_length( tbl_10.col_52 ) as r1 , unhex( tbl_4.col_16 ) as r2 from tbl_4 right join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where not( tbl_10.col_52 between '' and 't文髻=CXo檽睙F=团4鴶)瘃观' ) and not( IsNull( tbl_4.col_17 ) ); id estRows task access object operator info Projection_9 8320.83 root inlj_inner_multi_pattern.tbl_10.col_52, character_length(inlj_inner_multi_pattern.tbl_10.col_52)->Column#6, unhex(inlj_inner_multi_pattern.tbl_4.col_16)->Column#7 └─Projection_10 8320.83 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52 └─IndexJoin_16 8320.83 root inner join, inner:Selection_15, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_28(Build) 6656.67 root data:Selection_27 │ └─Selection_27 6656.67 cop[tikv] or(lt(inlj_inner_multi_pattern.tbl_10.col_52, ""), gt(inlj_inner_multi_pattern.tbl_10.col_52, "t文髻=CXo檽睙F=团4鴶)瘃观")) │ └─TableFullScan_26 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_15(Probe) 53200080.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_14 8320.83 root ├─Selection_13(Build) 8320.83 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_11 8329.16 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_12(Probe) 8320.83 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_3 , tbl_9 ) */ format( tbl_3.col_10 , 0 ) as r0 , sum( distinct tbl_3.col_9 ) as r1 , tbl_9.col_43 as r2 , tbl_9.col_48 as r3 , tbl_9.col_44 as r4 from tbl_9 join tbl_3 on tbl_9.col_44 = tbl_3.col_10 where not( tbl_9.col_47 <= '1980-09-23' ) and not( tbl_9.col_48 between 'David' and 'Charlie' ) order by r0,r1,r2,r3,r4 limit 34; id estRows task access object operator info Projection_13 1.00 root format(cast(inlj_inner_multi_pattern.tbl_3.col_10, double BINARY), 0)->Column#21, Column#20, inlj_inner_multi_pattern.tbl_9.col_43, inlj_inner_multi_pattern.tbl_9.col_48, inlj_inner_multi_pattern.tbl_9.col_44 └─Projection_54 1.00 root Column#20, inlj_inner_multi_pattern.tbl_9.col_43, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_48, inlj_inner_multi_pattern.tbl_3.col_10 └─TopN_16 1.00 root Column#34, Column#20, inlj_inner_multi_pattern.tbl_9.col_43, inlj_inner_multi_pattern.tbl_9.col_48, inlj_inner_multi_pattern.tbl_9.col_44, offset:0, count:34 └─Projection_55 1.00 root Column#20, inlj_inner_multi_pattern.tbl_9.col_43, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_48, inlj_inner_multi_pattern.tbl_3.col_10, format(cast(inlj_inner_multi_pattern.tbl_3.col_10, double BINARY), 0)->Column#34 └─HashAgg_18 1.00 root funcs:sum(distinct Column#29)->Column#20, funcs:firstrow(Column#30)->inlj_inner_multi_pattern.tbl_9.col_43, funcs:firstrow(Column#31)->inlj_inner_multi_pattern.tbl_9.col_44, funcs:firstrow(Column#32)->inlj_inner_multi_pattern.tbl_9.col_48, funcs:firstrow(Column#33)->inlj_inner_multi_pattern.tbl_3.col_10 └─Projection_53 3333.33 root cast(inlj_inner_multi_pattern.tbl_3.col_9, double BINARY)->Column#29, inlj_inner_multi_pattern.tbl_9.col_43, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_48, inlj_inner_multi_pattern.tbl_3.col_10 └─IndexJoin_25 3333.33 root inner join, inner:Selection_24, outer key:inlj_inner_multi_pattern.tbl_3.col_10, inner key:inlj_inner_multi_pattern.tbl_9.col_44, equal cond:eq(inlj_inner_multi_pattern.tbl_3.col_10, inlj_inner_multi_pattern.tbl_9.col_44) ├─TableReader_37(Build) 9990.00 root data:Selection_36 │ └─Selection_36 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_3.col_10)) │ └─TableFullScan_35 10000.00 cop[tikv] table:tbl_3 keep order:false, stats:pseudo └─Selection_24(Probe) 26640000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_9.col_48, "David"), le(inlj_inner_multi_pattern.tbl_9.col_48, "Charlie"))) └─IndexLookUp_23 3333.33 root ├─IndexRangeScan_20(Build) 10000.00 cop[tikv] table:tbl_9, index:idx_18(col_44, col_43) range: decided by [eq(inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_3.col_10)], keep order:false, stats:pseudo └─Selection_22(Probe) 3333.33 cop[tikv] gt(inlj_inner_multi_pattern.tbl_9.col_47, 1980-09-23 00:00:00.000000) └─TableRowIDScan_21 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_7 ) */ locate( tbl_9.col_44 , tbl_9.col_50 ) as r0 from tbl_9 right join tbl_7 on tbl_9.col_51 = tbl_7.col_36 where not( tbl_9.col_48 in ( 'Bob' ,'Bob' ,'Bob' ) ) and tbl_9.col_47 <> '1980-09-23' order by r0 limit 38; id estRows task access object operator info Projection_13 38.00 root locate(inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_50)->Column#13 └─Projection_43 38.00 root inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_50 └─TopN_16 38.00 root Column#23, offset:0, count:38 └─Projection_44 6656.67 root inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_50, locate(inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_50)->Column#23 └─IndexJoin_24 6656.67 root inner join, inner:Selection_23, outer key:Column#14, inner key:inlj_inner_multi_pattern.tbl_9.col_51, equal cond:eq(Column#14, inlj_inner_multi_pattern.tbl_9.col_51) ├─Projection_35(Build) 10000.00 root cast(inlj_inner_multi_pattern.tbl_7.col_36, double BINARY)->Column#14 │ └─IndexReader_39 10000.00 root index:IndexFullScan_38 │ └─IndexFullScan_38 10000.00 cop[tikv] table:tbl_7, index:idx_12(col_36) keep order:false, stats:pseudo └─Selection_23(Probe) 53253333.33 root not(in(inlj_inner_multi_pattern.tbl_9.col_48, "Bob", "Bob", "Bob")) └─IndexLookUp_22 6656.67 root ├─IndexRangeScan_19(Build) 10000.00 cop[tikv] table:tbl_9, index:idx_17(col_51, col_45, col_46) range: decided by [eq(inlj_inner_multi_pattern.tbl_9.col_51, Column#14)], keep order:false, stats:pseudo └─Selection_21(Probe) 6656.67 cop[tikv] ne(inlj_inner_multi_pattern.tbl_9.col_47, 1980-09-23 00:00:00.000000) └─TableRowIDScan_20 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ tbl_4.col_16 as r0 from tbl_4 right join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where not( tbl_4.col_17 between 'David' and 'Bob' ); id estRows task access object operator info IndexJoin_16 9990.00 root inner join, inner:Selection_15, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_27(Build) 10000.00 root data:TableFullScan_26 │ └─TableFullScan_26 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_15(Probe) 79920000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"))) └─IndexLookUp_14 9990.00 root ├─Selection_13(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_11 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_12(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ tbl_9.col_49 as r0 , ascii( tbl_4.col_16 ) as r1 , export_set( 1 , tbl_9.col_50 , tbl_9.col_44 , '-', 8) as r2 , approx_count_distinct( tbl_4.col_17 ) as r3 from tbl_4 right join tbl_9 on tbl_9.col_46 = tbl_4.col_17 where tbl_9.col_46 in ( select col_3 from tbl_1 where tbl_4.col_17 in ( select col_45 from tbl_9 where tbl_4.col_16 between 'Rt!%(' and 'B!k8k0pCBS9TGWB5wd2' ) and IsNull( tbl_9.col_51 ) ) and tbl_4.col_16 in ( 'Rt!%(' ) group by tbl_4.col_17 order by r0,r1,r2,r3 limit 65; id estRows task access object operator info Projection_22 5.12 root inlj_inner_multi_pattern.tbl_9.col_49, ascii(inlj_inner_multi_pattern.tbl_4.col_16)->Column#32, export_set(1, inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_9.col_44, -, 8)->Column#33, Column#31 └─Projection_49 5.12 root Column#31, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_49, inlj_inner_multi_pattern.tbl_9.col_50 └─TopN_25 5.12 root inlj_inner_multi_pattern.tbl_9.col_49, Column#41, Column#42, Column#31, offset:0, count:65 └─Projection_50 5.12 root Column#31, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_49, inlj_inner_multi_pattern.tbl_9.col_50, ascii(inlj_inner_multi_pattern.tbl_4.col_16)->Column#41, export_set(1, inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_9.col_44, -, 8)->Column#42 └─HashAgg_27 5.12 root group by:inlj_inner_multi_pattern.tbl_4.col_17, funcs:approx_count_distinct(inlj_inner_multi_pattern.tbl_4.col_17)->Column#31, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(inlj_inner_multi_pattern.tbl_9.col_44)->inlj_inner_multi_pattern.tbl_9.col_44, funcs:firstrow(inlj_inner_multi_pattern.tbl_9.col_49)->inlj_inner_multi_pattern.tbl_9.col_49, funcs:firstrow(inlj_inner_multi_pattern.tbl_9.col_50)->inlj_inner_multi_pattern.tbl_9.col_50 └─HashJoin_29 8.00 root semi join, equal:[eq(Column#36, inlj_inner_multi_pattern.tbl_1.col_3)] ├─TableDual_48(Build) 0.00 root rows:0 └─Projection_30(Probe) 10.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_49, inlj_inner_multi_pattern.tbl_9.col_50, cast(inlj_inner_multi_pattern.tbl_9.col_46, double BINARY)->Column#36 └─IndexJoin_36 10.00 root inner join, inner:Selection_35, outer key:inlj_inner_multi_pattern.tbl_9.col_46, inner key:inlj_inner_multi_pattern.tbl_4.col_17, equal cond:eq(inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_4.col_17) ├─TableReader_47(Build) 10000.00 root data:TableFullScan_46 │ └─TableFullScan_46 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_35(Probe) 80000.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_34 10.00 root ├─IndexRangeScan_31(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_46) eq(inlj_inner_multi_pattern.tbl_4.col_16, Rt!%()], keep order:false, stats:pseudo └─Selection_33(Probe) 10.00 cop[tikv] eq(inlj_inner_multi_pattern.tbl_4.col_16, "Rt!%(") └─TableRowIDScan_32 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_1 ) */ export_set( 7 , tbl_1.col_1 , tbl_1.col_5 , '-', 8) as r0 , bit_and( tbl_1.col_2 ) as r1 , to_base64( tbl_1.col_1 ) as r2 , tbl_4.col_16 as r3 , tbl_1.col_5 as r4 from tbl_4 right join tbl_1 on tbl_4.col_16 = tbl_1.col_4 where IsNull( tbl_4.col_17 ) and not( IsNull( tbl_4.col_16 ) ); id estRows task access object operator info Projection_11 1.00 root export_set(7, inlj_inner_multi_pattern.tbl_1.col_1, to_binary(inlj_inner_multi_pattern.tbl_1.col_5), -, 8)->Column#12, Column#11, to_base64(inlj_inner_multi_pattern.tbl_1.col_1)->Column#13, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_1.col_5 └─HashAgg_12 1.00 root funcs:bit_and(inlj_inner_multi_pattern.tbl_1.col_2)->Column#11, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(inlj_inner_multi_pattern.tbl_1.col_1)->inlj_inner_multi_pattern.tbl_1.col_1, funcs:firstrow(inlj_inner_multi_pattern.tbl_1.col_5)->inlj_inner_multi_pattern.tbl_1.col_5 └─IndexJoin_20 9990.00 root inner join, inner:Selection_19, outer key:Column#16, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(Column#16, inlj_inner_multi_pattern.tbl_4.col_16) ├─Projection_30(Build) 10000.00 root inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_1.col_5, cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#16 │ └─TableReader_32 10000.00 root data:TableFullScan_31 │ └─TableFullScan_31 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_19(Probe) 79920000.00 root isnull(inlj_inner_multi_pattern.tbl_4.col_17) └─IndexLookUp_18 9990.00 root ├─Selection_17(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_15 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#16)], keep order:false, stats:pseudo └─TableRowIDScan_16(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_3 , tbl_4 ) */ stddev_pop( tbl_4.col_17 ) as r0 , bit_length( tbl_3.col_14 ) as r1 , substring( tbl_4.col_16 , 4 ) as r2 , sum( distinct tbl_4.col_16 ) as r3 from tbl_3 left join tbl_4 on tbl_4.col_16 = tbl_3.col_8 where tbl_4.col_17 between null and 'Bob' group by tbl_4.col_16,tbl_4.col_17 order by r0,r1,r2,r3; id estRows task access object operator info Sort_10 6393.60 root Column#13, Column#15, Column#16, Column#14 └─Projection_12 6393.60 root Column#13, bit_length(inlj_inner_multi_pattern.tbl_3.col_14)->Column#15, substring(inlj_inner_multi_pattern.tbl_4.col_16, 4)->Column#16, Column#14 └─HashAgg_13 6393.60 root group by:Column#29, Column#30, funcs:stddev_pop(Column#25)->Column#13, funcs:sum(distinct Column#26)->Column#14, funcs:firstrow(Column#27)->inlj_inner_multi_pattern.tbl_3.col_14, funcs:firstrow(Column#28)->inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_48 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#25, cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#26, inlj_inner_multi_pattern.tbl_3.col_14, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─IndexJoin_20 9990.00 root inner join, inner:Selection_19, outer key:inlj_inner_multi_pattern.tbl_3.col_8, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_3.col_8, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_31(Build) 10000.00 root data:TableFullScan_30 │ └─TableFullScan_30 10000.00 cop[tikv] table:tbl_3 keep order:false, stats:pseudo └─Selection_19(Probe) 79920000.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, NULL), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob") └─IndexLookUp_18 9990.00 root ├─Selection_17(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_15 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_3.col_8)], keep order:false, stats:pseudo └─TableRowIDScan_16(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ char( tbl_9.col_45 , tbl_9.col_46 using gbk ) as r0 , tbl_9.col_46 as r1 from tbl_9 left join tbl_4 on tbl_9.col_46 = tbl_4.col_16 where tbl_4.col_17 != 'David' and not( tbl_4.col_16 <= 'B!k8k0pCBS9TGWB5wd2' ) order by r0,r1; id estRows task access object operator info Sort_10 3333.33 root Column#14, inlj_inner_multi_pattern.tbl_9.col_46 └─Projection_12 3333.33 root char_func(cast(inlj_inner_multi_pattern.tbl_9.col_45, bigint(22) BINARY), cast(inlj_inner_multi_pattern.tbl_9.col_46, bigint(43) BINARY), gbk)->Column#14, inlj_inner_multi_pattern.tbl_9.col_46 └─IndexJoin_20 3333.33 root inner join, inner:Selection_19, outer key:inlj_inner_multi_pattern.tbl_9.col_46, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_4.col_16) ├─IndexReader_34(Build) 10000.00 root index:IndexFullScan_33 │ └─IndexFullScan_33 10000.00 cop[tikv] table:tbl_9, index:idx_17(col_51, col_45, col_46) keep order:false, stats:pseudo └─Selection_19(Probe) 26666666.67 root ne(inlj_inner_multi_pattern.tbl_4.col_17, "David") └─IndexLookUp_18 3333.33 root ├─Selection_16(Build) 10000.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_14 30000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_46)], keep order:false, stats:pseudo └─Selection_17(Probe) 3333.33 cop[tikv] gt(inlj_inner_multi_pattern.tbl_4.col_16, "B!k8k0pCBS9TGWB5wd2") └─TableRowIDScan_15 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_5 , tbl_4 ) */ stddev_samp( tbl_4.col_17 ) as r0 , tbl_5.col_26 as r1 , strcmp( tbl_5.col_20 , tbl_5.col_19 ) as r2 from tbl_5 right join tbl_4 on tbl_5.col_18 = tbl_4.col_16 where not( tbl_4.col_17 in ( 'Charlie' ,'Bob' ,'Bob' ,'Charlie' ) ) and not( IsNull( tbl_5.col_18 ) ) group by tbl_4.col_17 order by r0,r1,r2; id estRows task access object operator info Sort_10 6393.60 root Column#14, inlj_inner_multi_pattern.tbl_5.col_26, Column#15 └─Projection_12 6393.60 root Column#14, inlj_inner_multi_pattern.tbl_5.col_26, strcmp(cast(inlj_inner_multi_pattern.tbl_5.col_20, var_string(5)), cast(inlj_inner_multi_pattern.tbl_5.col_19, var_string(62)))->Column#15 └─HashAgg_13 6393.60 root group by:Column#24, funcs:stddev_samp(Column#20)->Column#14, funcs:firstrow(Column#21)->inlj_inner_multi_pattern.tbl_5.col_19, funcs:firstrow(Column#22)->inlj_inner_multi_pattern.tbl_5.col_20, funcs:firstrow(Column#23)->inlj_inner_multi_pattern.tbl_5.col_26 └─Projection_32 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#20, inlj_inner_multi_pattern.tbl_5.col_19, inlj_inner_multi_pattern.tbl_5.col_20, inlj_inner_multi_pattern.tbl_5.col_26, inlj_inner_multi_pattern.tbl_4.col_17 └─IndexJoin_19 9990.00 root inner join, inner:Selection_18, outer key:inlj_inner_multi_pattern.tbl_5.col_18, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_5.col_18, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_31(Build) 9990.00 root data:Selection_30 │ └─Selection_30 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_5.col_18)) │ └─TableFullScan_29 10000.00 cop[tikv] table:tbl_5 keep order:false, stats:pseudo └─Selection_18(Probe) 79840080.00 root not(in(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie", "Bob", "Bob", "Charlie")) └─IndexLookUp_17 9990.00 root ├─Selection_16(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_14 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_5.col_18)], keep order:false, stats:pseudo └─TableRowIDScan_15(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ tbl_10.col_52 as r0 , var_samp( tbl_10.col_52 ) as r1 from tbl_10 left join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where tbl_4.col_17 != 'Charlie' or tbl_4.col_17 in ( 'David' ,'Charlie' ,'David' ) order by r0,r1; id estRows task access object operator info Sort_10 1.00 root inlj_inner_multi_pattern.tbl_10.col_52, Column#6 └─Projection_12 1.00 root inlj_inner_multi_pattern.tbl_10.col_52, Column#6 └─HashAgg_13 1.00 root funcs:var_samp(Column#13)->Column#6, funcs:firstrow(Column#14)->inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_48 9990.00 root cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#13, inlj_inner_multi_pattern.tbl_10.col_52 └─IndexJoin_20 9990.00 root inner join, inner:Selection_19, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_31(Build) 10000.00 root data:TableFullScan_30 │ └─TableFullScan_30 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_19(Probe) 79920000.00 root or(ne(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"), in(inlj_inner_multi_pattern.tbl_4.col_17, "David", "Charlie", "David")) └─IndexLookUp_18 9990.00 root ├─Selection_17(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_15 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_16(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_9 ) */ repeat( tbl_4.col_16 , tbl_4.col_17 ) as r0 , instr( tbl_4.col_16 , tbl_4.col_16 ) as r1 , bin( tbl_4.col_17 ) as r2 , mid( tbl_9.col_50 , 1 , 9 ) as r3 from tbl_4 right join tbl_9 on tbl_9.col_46 = tbl_4.col_16 where not( tbl_9.col_47 between '1986-12-31' and '1980-09-23' ) and not( tbl_4.col_17 >= 'David' ) order by r0,r1,r2,r3 limit 32; id estRows task access object operator info Projection_12 32.00 root repeat(inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY))->Column#14, instr(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#15, bin(cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY))->Column#16, mid(inlj_inner_multi_pattern.tbl_9.col_50, 1, 9)->Column#17 └─Projection_43 32.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_50 └─TopN_15 32.00 root Column#26, Column#27, Column#28, Column#29, offset:0, count:32 └─Projection_44 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_50, repeat(inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY))->Column#26, instr(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#27, bin(cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY))->Column#28, mid(inlj_inner_multi_pattern.tbl_9.col_50, 1, 9)->Column#29 └─Projection_17 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_50 └─IndexJoin_23 9990.00 root inner join, inner:Selection_22, outer key:inlj_inner_multi_pattern.tbl_9.col_46, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_35(Build) 9990.00 root data:Selection_34 │ └─Selection_34 9990.00 cop[tikv] or(lt(inlj_inner_multi_pattern.tbl_9.col_47, 1986-12-31 00:00:00.000000), gt(inlj_inner_multi_pattern.tbl_9.col_47, 1980-09-23 00:00:00.000000)) │ └─TableFullScan_33 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_22(Probe) 79840080.00 root not(ge(inlj_inner_multi_pattern.tbl_4.col_17, "David")) └─IndexLookUp_21 9990.00 root ├─Selection_20(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_18 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_46)], keep order:false, stats:pseudo └─TableRowIDScan_19(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ tbl_10.col_52 as r0 , position( tbl_10.col_52 in tbl_10.col_52 ) as r1 , tbl_4.col_17 as r2 , tbl_4.col_16 as r3 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_4.col_17 between 'David' and 'David' ) and not( tbl_10.col_52 between 't文髻=CXo檽睙F=团4鴶)瘃观' and 't文髻=CXo檽睙F=团4鴶)瘃观' ); id estRows task access object operator info Projection_9 8320.83 root inlj_inner_multi_pattern.tbl_10.col_52, position(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52)->Column#6, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_15 8320.83 root inner join, inner:Selection_14, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_27(Build) 6656.67 root data:Selection_26 │ └─Selection_26 6656.67 cop[tikv] or(lt(inlj_inner_multi_pattern.tbl_10.col_52, "t文髻=CXo檽睙F=团4鴶)瘃观"), gt(inlj_inner_multi_pattern.tbl_10.col_52, "t文髻=CXo檽睙F=团4鴶)瘃观")) │ └─TableFullScan_25 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_14(Probe) 53200080.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "David"))) └─IndexLookUp_13 8320.83 root ├─Selection_12(Build) 8320.83 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_10 8329.16 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_11(Probe) 8320.83 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ tbl_10.col_52 as r0 , count( tbl_4.col_16 ) as r1 , char_length( tbl_4.col_16 ) as r2 , max( tbl_4.col_17 ) as r3 , tbl_4.col_16 as r4 from tbl_10 right join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_10.col_52 < 'K齪裮~*奚UE貮#V' ) and not( tbl_4.col_17 between 'Charlie' and 'Bob' ); id estRows task access object operator info Projection_9 1.00 root inlj_inner_multi_pattern.tbl_10.col_52, Column#6, char_length(inlj_inner_multi_pattern.tbl_4.col_16)->Column#8, Column#7, inlj_inner_multi_pattern.tbl_4.col_16 └─HashAgg_10 1.00 root funcs:count(inlj_inner_multi_pattern.tbl_4.col_16)->Column#6, funcs:max(inlj_inner_multi_pattern.tbl_4.col_17)->Column#7, funcs:firstrow(inlj_inner_multi_pattern.tbl_10.col_52)->inlj_inner_multi_pattern.tbl_10.col_52, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_17 4166.67 root inner join, inner:Selection_16, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_29(Build) 3333.33 root data:Selection_28 │ └─Selection_28 3333.33 cop[tikv] ge(inlj_inner_multi_pattern.tbl_10.col_52, "K齪裮~*奚UE貮#V") │ └─TableFullScan_27 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_16(Probe) 26640000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"))) └─IndexLookUp_15 4166.67 root ├─Selection_14(Build) 4166.67 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_12 4170.84 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_13(Probe) 4166.67 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ min( distinct tbl_4.col_17 ) as r0 , elt(2, tbl_10.col_52 , tbl_10.col_52 ) as r1 from tbl_4 right join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where not( tbl_4.col_17 != 'Bob' ) and tbl_4.col_16 between 'EmWPH5cZQK' and null order by r0,r1 limit 32; id estRows task access object operator info Projection_12 1.00 root Column#6, elt(2, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52)->Column#7 └─Projection_38 1.00 root Column#6, inlj_inner_multi_pattern.tbl_10.col_52 └─TopN_15 1.00 root Column#6, Column#12, offset:0, count:32 └─Projection_39 1.00 root Column#6, inlj_inner_multi_pattern.tbl_10.col_52, elt(2, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52)->Column#12 └─StreamAgg_18 1.00 root funcs:min(distinct inlj_inner_multi_pattern.tbl_4.col_17)->Column#6, funcs:firstrow(inlj_inner_multi_pattern.tbl_10.col_52)->inlj_inner_multi_pattern.tbl_10.col_52 └─IndexJoin_25 0.00 root inner join, inner:Selection_24, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_37(Build) 10000.00 root data:TableFullScan_36 │ └─TableFullScan_36 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_24(Probe) 0.00 root not(ne(inlj_inner_multi_pattern.tbl_4.col_17, "Bob")) └─IndexLookUp_23 0.00 root ├─Selection_21(Build) 0.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_19 0.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─Selection_22(Probe) 0.00 cop[tikv] ge(inlj_inner_multi_pattern.tbl_4.col_16, "EmWPH5cZQK"), le(inlj_inner_multi_pattern.tbl_4.col_16, NULL) └─TableRowIDScan_20 0.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ tbl_10.col_52 as r0 , approx_count_distinct( tbl_4.col_17 ) as r1 , strcmp( tbl_4.col_16 , tbl_4.col_16 ) as r2 , tbl_4.col_17 as r3 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where tbl_4.col_17 in ( select col_49 from tbl_9 where tbl_4.col_17 < 'David' and not( tbl_4.col_17 < 'Charlie' ) ) order by r0,r1,r2,r3; id estRows task access object operator info Sort_16 1.00 root inlj_inner_multi_pattern.tbl_10.col_52, Column#16, Column#17, inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_18 1.00 root inlj_inner_multi_pattern.tbl_10.col_52, Column#16, strcmp(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#17, inlj_inner_multi_pattern.tbl_4.col_17 └─HashAgg_19 1.00 root funcs:approx_count_distinct(inlj_inner_multi_pattern.tbl_4.col_17)->Column#16, funcs:firstrow(inlj_inner_multi_pattern.tbl_10.col_52)->inlj_inner_multi_pattern.tbl_10.col_52, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_17)->inlj_inner_multi_pattern.tbl_4.col_17 └─HashJoin_21 7992.00 root semi join, equal:[eq(Column#19, inlj_inner_multi_pattern.tbl_9.col_49)] ├─TableReader_41(Build) 10000.00 root data:TableFullScan_40 │ └─TableFullScan_40 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Projection_22(Probe) 9990.00 root inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, cast(inlj_inner_multi_pattern.tbl_4.col_17, datetime(6) BINARY)->Column#19 └─IndexJoin_28 9990.00 root inner join, inner:Selection_27, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_39(Build) 10000.00 root data:TableFullScan_38 │ └─TableFullScan_38 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_27(Probe) 79920000.00 root lt(inlj_inner_multi_pattern.tbl_4.col_17, "David"), not(lt(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie")) └─IndexLookUp_26 9990.00 root ├─Selection_25(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_23 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_24(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ right( tbl_10.col_52 , 0 ) as r0 , right( tbl_4.col_16 , 1 ) as r1 from tbl_10 join tbl_4 on tbl_4.col_16 = tbl_10.col_52 where not( IsNull( tbl_4.col_17 ) ); id estRows task access object operator info Projection_9 9990.00 root right(inlj_inner_multi_pattern.tbl_10.col_52, 0)->Column#6, right(inlj_inner_multi_pattern.tbl_4.col_16, 1)->Column#7 └─IndexJoin_15 9990.00 root inner join, inner:Selection_14, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_26(Build) 10000.00 root data:TableFullScan_25 │ └─TableFullScan_25 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_14(Probe) 79920000.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_13 9990.00 root ├─Selection_12(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_10 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_11(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_9 ) */ min( tbl_9.col_45 ) as r0 , octet_length( tbl_10.col_52 ) as r1 from tbl_10 join tbl_9 on tbl_10.col_52 = tbl_9.col_51 where IsNull( tbl_9.col_48 ); id estRows task access object operator info Projection_12 1.00 root Column#13, octet_length(to_binary(inlj_inner_multi_pattern.tbl_10.col_52))->Column#14 └─HashAgg_13 1.00 root funcs:min(inlj_inner_multi_pattern.tbl_9.col_45)->Column#13, funcs:firstrow(inlj_inner_multi_pattern.tbl_10.col_52)->inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_15 10000.00 root inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_9.col_45 └─IndexJoin_20 10000.00 root inner join, inner:Selection_19, outer key:Column#16, inner key:inlj_inner_multi_pattern.tbl_9.col_51, equal cond:eq(Column#16, inlj_inner_multi_pattern.tbl_9.col_51) ├─Projection_30(Build) 10000.00 root inlj_inner_multi_pattern.tbl_10.col_52, cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#16 │ └─TableReader_32 10000.00 root data:TableFullScan_31 │ └─TableFullScan_31 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_19(Probe) 80000000.00 root isnull(inlj_inner_multi_pattern.tbl_9.col_48) └─IndexLookUp_18 10000.00 root ├─IndexRangeScan_16(Build) 10000.00 cop[tikv] table:tbl_9, index:idx_17(col_51, col_45, col_46) range: decided by [eq(inlj_inner_multi_pattern.tbl_9.col_51, Column#16)], keep order:false, stats:pseudo └─TableRowIDScan_17(Probe) 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ tbl_4.col_17 as r0 , mid( tbl_10.col_52 , 1 , 3 ) as r1 , tbl_10.col_52 as r2 , bin( tbl_4.col_16 ) as r3 , tbl_4.col_17 as r4 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_4.col_17 > 'Bob' ) order by r0,r1,r2,r3,r4 limit 85; id estRows task access object operator info Projection_12 85.00 root inlj_inner_multi_pattern.tbl_4.col_17, mid(inlj_inner_multi_pattern.tbl_10.col_52, 1, 3)->Column#6, inlj_inner_multi_pattern.tbl_10.col_52, bin(cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY))->Column#7, inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_34 85.00 root inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─TopN_15 85.00 root inlj_inner_multi_pattern.tbl_4.col_17, Column#11, inlj_inner_multi_pattern.tbl_10.col_52, Column#12, offset:0, count:85 └─Projection_35 9990.00 root inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, mid(inlj_inner_multi_pattern.tbl_10.col_52, 1, 3)->Column#11, bin(cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY))->Column#12 └─IndexJoin_22 9990.00 root inner join, inner:Selection_21, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_33(Build) 10000.00 root data:TableFullScan_32 │ └─TableFullScan_32 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_21(Probe) 79920000.00 root not(gt(inlj_inner_multi_pattern.tbl_4.col_17, "Bob")) └─IndexLookUp_20 9990.00 root ├─Selection_19(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_17 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_18(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_8 , tbl_4 ) */ character_length( tbl_4.col_16 ) as r0 from tbl_8 left join tbl_4 on tbl_8.col_37 = tbl_4.col_16 where not( IsNull( tbl_4.col_17 ) ); id estRows task access object operator info Projection_10 10000.00 root character_length(inlj_inner_multi_pattern.tbl_4.col_16)->Column#11 └─IndexJoin_16 10000.00 root inner join, inner:Selection_15, outer key:Column#12, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(Column#12, inlj_inner_multi_pattern.tbl_4.col_16) ├─Projection_25(Build) 10000.00 root cast(inlj_inner_multi_pattern.tbl_8.col_37, var_string(10))->Column#12 │ └─TableReader_27 10000.00 root data:TableFullScan_26 │ └─TableFullScan_26 10000.00 cop[tikv] table:tbl_8 keep order:false, stats:pseudo └─Selection_15(Probe) 80000000.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_14 10000.00 root ├─IndexRangeScan_12(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#12)], keep order:false, stats:pseudo └─TableRowIDScan_13(Probe) 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_8 , tbl_4 ) */ tbl_8.col_40 as r0 , tbl_4.col_17 as r1 , count( distinct tbl_8.col_41 ) as r2 , char( tbl_4.col_17 , tbl_4.col_17 using gbk ) as r3 from tbl_8 join tbl_4 on tbl_4.col_16 = tbl_8.col_37 where tbl_4.col_17 between 'David' and 'Alice' or not( tbl_4.col_16 <> 'EmWPH5cZQK' ); id estRows task access object operator info Projection_12 1.00 root inlj_inner_multi_pattern.tbl_8.col_40, inlj_inner_multi_pattern.tbl_4.col_17, Column#11, char_func(cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), gbk)->Column#12 └─HashAgg_13 1.00 root funcs:count(distinct inlj_inner_multi_pattern.tbl_8.col_41)->Column#11, funcs:firstrow(inlj_inner_multi_pattern.tbl_8.col_40)->inlj_inner_multi_pattern.tbl_8.col_40, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_17)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_15 10000.00 root inlj_inner_multi_pattern.tbl_8.col_40, inlj_inner_multi_pattern.tbl_8.col_41, inlj_inner_multi_pattern.tbl_4.col_17 └─IndexJoin_20 10000.00 root inner join, inner:Selection_19, outer key:Column#14, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(Column#14, inlj_inner_multi_pattern.tbl_4.col_16) ├─Projection_29(Build) 10000.00 root inlj_inner_multi_pattern.tbl_8.col_40, inlj_inner_multi_pattern.tbl_8.col_41, cast(inlj_inner_multi_pattern.tbl_8.col_37, var_string(10))->Column#14 │ └─TableReader_31 10000.00 root data:TableFullScan_30 │ └─TableFullScan_30 10000.00 cop[tikv] table:tbl_8 keep order:false, stats:pseudo └─Selection_19(Probe) 80000000.00 root or(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Alice")), not(ne(inlj_inner_multi_pattern.tbl_4.col_16, "EmWPH5cZQK"))) └─IndexLookUp_18 10000.00 root ├─IndexRangeScan_16(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#14)], keep order:false, stats:pseudo └─TableRowIDScan_17(Probe) 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_1 ) */ tbl_4.col_16 as r0 , tbl_4.col_17 as r1 from tbl_4 right join tbl_1 on tbl_4.col_16 = tbl_1.col_4 where not( tbl_4.col_17 > 'David' ) order by r0,r1; id estRows task access object operator info Sort_11 10000.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─IndexJoin_19 10000.00 root inner join, inner:Selection_18, outer key:Column#11, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(Column#11, inlj_inner_multi_pattern.tbl_4.col_16) ├─Projection_28(Build) 10000.00 root cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#11 │ └─TableReader_30 10000.00 root data:TableFullScan_29 │ └─TableFullScan_29 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_18(Probe) 80000000.00 root not(gt(inlj_inner_multi_pattern.tbl_4.col_17, "David")) └─IndexLookUp_17 10000.00 root ├─IndexRangeScan_15(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#11)], keep order:false, stats:pseudo └─TableRowIDScan_16(Probe) 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_5 , tbl_4 ) */ sum( distinct tbl_4.col_16 ) as r0 from tbl_4 join tbl_5 on tbl_4.col_16 = tbl_5.col_22 where IsNull( tbl_5.col_22 ) or IsNull( tbl_4.col_17 ) group by tbl_4.col_16; id estRows task access object operator info HashAgg_12 6393.60 root group by:Column#22, funcs:sum(distinct Column#21)->Column#14 └─Projection_49 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#21, inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_20 9990.00 root inner join, inner:Selection_19, outer key:inlj_inner_multi_pattern.tbl_5.col_22, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_5.col_22, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_31(Build) 10000.00 root data:TableFullScan_30 │ └─TableFullScan_30 10000.00 cop[tikv] table:tbl_5 keep order:false, stats:pseudo └─Selection_19(Probe) 79920000.00 root or(0, isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_18 9990.00 root ├─Selection_17(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_15 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_5.col_22)], keep order:false, stats:pseudo └─TableRowIDScan_16(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ lcase( tbl_4.col_16 ) as r0 , bit_length( tbl_4.col_16 ) as r1 , count( tbl_10.col_52 ) as r2 , tbl_4.col_16 as r3 from tbl_10 left join tbl_4 on tbl_4.col_16 = tbl_10.col_52 where not( tbl_4.col_17 > 'Charlie' ) and not( tbl_10.col_52 in ( '^M8VW@脛娳v6黋c巡&墐' ,'' ,'t文髻=CXo檽睙F=团4鴶)瘃观' ) ) group by tbl_10.col_52 order by r0,r1,r2,r3; id estRows task access object operator info Sort_10 3266.67 root Column#7, Column#8, Column#6, inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_12 3266.67 root lcase(inlj_inner_multi_pattern.tbl_4.col_16)->Column#7, bit_length(inlj_inner_multi_pattern.tbl_4.col_16)->Column#8, Column#6, inlj_inner_multi_pattern.tbl_4.col_16 └─HashAgg_13 3266.67 root group by:inlj_inner_multi_pattern.tbl_10.col_52, funcs:count(inlj_inner_multi_pattern.tbl_10.col_52)->Column#6, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_19 5104.17 root inner join, inner:Selection_18, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_31(Build) 4083.33 root data:Selection_30 │ └─Selection_30 4083.33 cop[tikv] not(in(inlj_inner_multi_pattern.tbl_10.col_52, "^M8VW@脛娳v6黋c巡&墐", "", "t文髻=CXo檽睙F=团4鴶)瘃观")) │ └─TableFullScan_29 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_18(Probe) 32634000.00 root not(gt(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie")) └─IndexLookUp_17 5104.17 root ├─Selection_16(Build) 5104.17 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_14 5109.28 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_15(Probe) 5104.17 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ var_samp( tbl_9.col_46 ) as r0 , tbl_4.col_17 as r1 , insert( tbl_9.col_44 , 2 , 2 , tbl_9.col_44 ) as r2 from tbl_9 right join tbl_4 on tbl_9.col_44 = tbl_4.col_16 where tbl_9.col_48 in ( select col_17 from tbl_4 where tbl_4.col_16 between 'Rt!%(' and 'B!k8k0pCBS9TGWB5wd2' ) order by r0,r1,r2; id estRows task access object operator info Sort_17 1.00 root Column#17, inlj_inner_multi_pattern.tbl_4.col_17, Column#18 └─Projection_19 1.00 root Column#17, inlj_inner_multi_pattern.tbl_4.col_17, insert_func(inlj_inner_multi_pattern.tbl_9.col_44, 2, 2, inlj_inner_multi_pattern.tbl_9.col_44)->Column#18 └─StreamAgg_21 1.00 root funcs:var_samp(Column#21)->Column#17, funcs:firstrow(Column#22)->inlj_inner_multi_pattern.tbl_9.col_44, funcs:firstrow(Column#23)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_42 1.56 root cast(inlj_inner_multi_pattern.tbl_9.col_46, double BINARY)->Column#21, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_4.col_17 └─HashJoin_41 1.56 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_4.col_16)] ├─HashJoin_26(Build) 1.25 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_48)] │ ├─HashAgg_27(Build) 1.00 root group by:inlj_inner_multi_pattern.tbl_4.col_17, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_17)->inlj_inner_multi_pattern.tbl_4.col_17 │ │ └─Selection_28 0.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) │ │ └─TableDual_29 0.00 root rows:0 │ └─Selection_30(Probe) 8000.00 root not(isnull(inlj_inner_multi_pattern.tbl_9.col_48)) │ └─TableReader_32 10000.00 root data:TableFullScan_31 │ └─TableFullScan_31 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─TableReader_35(Probe) 9990.00 root data:Selection_34 └─Selection_34 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_33 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_1 , tbl_4 ) */ tbl_1.col_1 as r0 from tbl_1 join tbl_4 on tbl_1.col_4 = tbl_4.col_16 where not( tbl_1.col_3 between 4734.163053758499 and 9132.911812156843 ) and tbl_4.col_17 <= 'Charlie' order by r0; id estRows task access object operator info Sort_12 8320.83 root inlj_inner_multi_pattern.tbl_1.col_1 └─IndexJoin_20 8320.83 root inner join, inner:Selection_19, outer key:Column#11, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(Column#11, inlj_inner_multi_pattern.tbl_4.col_16) ├─Projection_29(Build) 6656.67 root inlj_inner_multi_pattern.tbl_1.col_1, cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#11 │ └─TableReader_32 6656.67 root data:Selection_31 │ └─Selection_31 6656.67 cop[tikv] or(lt(inlj_inner_multi_pattern.tbl_1.col_3, 4734.163053758499), gt(inlj_inner_multi_pattern.tbl_1.col_3, 9132.911812156843)) │ └─TableFullScan_30 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_19(Probe) 53253333.33 root le(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie") └─IndexLookUp_18 8320.83 root ├─IndexRangeScan_16(Build) 8320.83 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#11)], keep order:false, stats:pseudo └─TableRowIDScan_17(Probe) 8320.83 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_8 , tbl_4 ) */ insert( tbl_4.col_16 , 0 , 1 , tbl_4.col_16 ) as r0 , ord( tbl_4.col_16 ) as r1 , tbl_4.col_17 as r2 from tbl_8 join tbl_4 on tbl_8.col_37 = tbl_4.col_16 where not( tbl_4.col_17 != 'Charlie' ) and tbl_4.col_17 between 'David' and 'Bob'; id estRows task access object operator info Projection_11 10000.00 root insert_func(inlj_inner_multi_pattern.tbl_4.col_16, 0, 1, inlj_inner_multi_pattern.tbl_4.col_16)->Column#11, ord(inlj_inner_multi_pattern.tbl_4.col_16)->Column#12, inlj_inner_multi_pattern.tbl_4.col_17 └─IndexJoin_17 10000.00 root inner join, inner:Selection_16, outer key:Column#13, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(Column#13, inlj_inner_multi_pattern.tbl_4.col_16) ├─Projection_26(Build) 10000.00 root cast(inlj_inner_multi_pattern.tbl_8.col_37, var_string(10))->Column#13 │ └─TableReader_28 10000.00 root data:TableFullScan_27 │ └─TableFullScan_27 10000.00 cop[tikv] table:tbl_8 keep order:false, stats:pseudo └─Selection_16(Probe) 80000000.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"), not(ne(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie")) └─IndexLookUp_15 10000.00 root ├─IndexRangeScan_13(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#13)], keep order:false, stats:pseudo └─TableRowIDScan_14(Probe) 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ tbl_10.col_52 as r0 , ord( tbl_4.col_16 ) as r1 from tbl_4 right join tbl_10 on tbl_4.col_17 = tbl_10.col_52 where not( tbl_10.col_52 != 'Jsc洉tgS葹6RX' ) and tbl_4.col_16 in ( 'EmWPH5cZQK' ,'Rt!%(' ) order by r0,r1; id estRows task access object operator info Sort_10 12.50 root inlj_inner_multi_pattern.tbl_10.col_52, Column#6 └─Projection_12 12.50 root inlj_inner_multi_pattern.tbl_10.col_52, ord(inlj_inner_multi_pattern.tbl_4.col_16)->Column#6 └─Projection_13 12.50 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52 └─IndexJoin_19 12.50 root inner join, inner:Selection_18, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_17, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_17) ├─TableReader_31(Build) 10.00 root data:Selection_30 │ └─Selection_30 10.00 cop[tikv] eq(inlj_inner_multi_pattern.tbl_10.col_52, "Jsc洉tgS葹6RX") │ └─TableFullScan_29 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_18(Probe) 160.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_17 12.50 root ├─IndexRangeScan_14(Build) 6250.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52) in(inlj_inner_multi_pattern.tbl_4.col_16, EmWPH5cZQK, Rt!%()], keep order:false, stats:pseudo └─Selection_16(Probe) 12.50 cop[tikv] in(inlj_inner_multi_pattern.tbl_4.col_16, "EmWPH5cZQK", "Rt!%(") └─TableRowIDScan_15 6250.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ find_in_set( tbl_4.col_16 , tbl_4.col_16 ) as r0 from tbl_9 join tbl_4 on tbl_9.col_48 = tbl_4.col_16 where not( IsNull( tbl_4.col_17 ) ) and IsNull( tbl_4.col_17 ) order by r0 limit 85; id estRows task access object operator info Projection_14 85.00 root find_in_set(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#14 └─Projection_39 85.00 root inlj_inner_multi_pattern.tbl_4.col_16 └─TopN_17 85.00 root Column#18, offset:0, count:85 └─Projection_40 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, find_in_set(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#18 └─IndexJoin_25 9990.00 root inner join, inner:Selection_24, outer key:inlj_inner_multi_pattern.tbl_9.col_48, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_9.col_48, inlj_inner_multi_pattern.tbl_4.col_16) ├─Selection_35(Build) 8000.00 root not(isnull(inlj_inner_multi_pattern.tbl_9.col_48)) │ └─TableReader_37 10000.00 root data:TableFullScan_36 │ └─TableFullScan_36 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_24(Probe) 63936000.00 root isnull(inlj_inner_multi_pattern.tbl_4.col_17), not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_23 9990.00 root ├─Selection_22(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_20 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_48)], keep order:false, stats:pseudo └─TableRowIDScan_21(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_9 ) */ tbl_4.col_16 as r0 , group_concat( distinct tbl_9.col_48 order by tbl_9.col_48 ) as r1 , make_set( 1 , tbl_9.col_46 , tbl_9.col_44 ) as r2 from tbl_4 join tbl_9 on tbl_4.col_17 = tbl_9.col_46 where not( tbl_4.col_16 <> 'YsxGq(s!@J$kCF&S' ) and not( tbl_9.col_50 in ( 'Yg)Fr(dZXB' ) ); id estRows task access object operator info Projection_10 1.00 root inlj_inner_multi_pattern.tbl_4.col_16, Column#14, make_set(1, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_44)->Column#15 └─StreamAgg_12 1.00 root funcs:group_concat(distinct inlj_inner_multi_pattern.tbl_9.col_48 order by inlj_inner_multi_pattern.tbl_9.col_48 separator ",")->Column#14, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(inlj_inner_multi_pattern.tbl_9.col_44)->inlj_inner_multi_pattern.tbl_9.col_44, funcs:firstrow(inlj_inner_multi_pattern.tbl_9.col_46)->inlj_inner_multi_pattern.tbl_9.col_46 └─IndexJoin_36 10.00 root inner join, inner:Selection_35, outer key:inlj_inner_multi_pattern.tbl_9.col_46, inner key:inlj_inner_multi_pattern.tbl_4.col_17, equal cond:eq(inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_4.col_17) ├─TableReader_30(Build) 6656.67 root data:Selection_29 │ └─Selection_29 6656.67 cop[tikv] ne(inlj_inner_multi_pattern.tbl_9.col_50, "Yg)Fr(dZXB") │ └─TableFullScan_28 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_35(Probe) 53253.33 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_34 10.00 root ├─IndexRangeScan_31(Build) 6656.67 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_46) eq(inlj_inner_multi_pattern.tbl_4.col_16, YsxGq(s!@J$kCF&S)], keep order:false, stats:pseudo └─Selection_33(Probe) 10.00 cop[tikv] eq(inlj_inner_multi_pattern.tbl_4.col_16, "YsxGq(s!@J$kCF&S") └─TableRowIDScan_32 6656.67 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_1 ) */ tbl_1.col_4 as r0 , tbl_1.col_6 as r1 , field( tbl_4.col_16 , tbl_4.col_16 , tbl_4.col_16 ) as r2 from tbl_4 right join tbl_1 on tbl_4.col_16 = tbl_1.col_4 where tbl_1.col_4 in ( select col_7 from tbl_2 where not( tbl_4.col_17 >= 'David' ) ); id estRows task access object operator info Projection_15 8000.00 root inlj_inner_multi_pattern.tbl_1.col_4, inlj_inner_multi_pattern.tbl_1.col_6, field(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#12 └─HashJoin_24 8000.00 root semi join, equal:[eq(Column#16, inlj_inner_multi_pattern.tbl_2.col_7)] ├─TableReader_44(Build) 10000.00 root data:TableFullScan_43 │ └─TableFullScan_43 10000.00 cop[tikv] table:tbl_2 keep order:false, stats:pseudo └─Projection_25(Probe) 10000.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_1.col_4, inlj_inner_multi_pattern.tbl_1.col_6, cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#16 └─IndexJoin_31 10000.00 root inner join, inner:Selection_30, outer key:Column#14, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(Column#14, inlj_inner_multi_pattern.tbl_4.col_16) ├─Projection_40(Build) 10000.00 root inlj_inner_multi_pattern.tbl_1.col_4, inlj_inner_multi_pattern.tbl_1.col_6, cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#14 │ └─TableReader_42 10000.00 root data:TableFullScan_41 │ └─TableFullScan_41 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_30(Probe) 80000000.00 root not(ge(inlj_inner_multi_pattern.tbl_4.col_17, "David")) └─IndexLookUp_29 10000.00 root ├─IndexRangeScan_27(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#14)], keep order:false, stats:pseudo └─TableRowIDScan_28(Probe) 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ var_samp( tbl_4.col_17 ) as r0 , tbl_4.col_17 as r1 , tbl_10.col_52 as r2 , bit_xor( tbl_4.col_17 ) as r3 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_4.col_17 between 'David' and 'Charlie' ) order by r0,r1,r2,r3; id estRows task access object operator info Sort_11 1.00 root Column#6, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52, Column#7 └─Projection_13 1.00 root Column#6, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52, Column#7 └─HashAgg_14 1.00 root funcs:var_samp(Column#14)->Column#6, funcs:bit_xor(Column#15)->Column#7, funcs:firstrow(Column#16)->inlj_inner_multi_pattern.tbl_10.col_52, funcs:firstrow(Column#17)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_49 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#14, cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY)->Column#15, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_17 └─IndexJoin_21 9990.00 root inner join, inner:Selection_20, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_32(Build) 10000.00 root data:TableFullScan_31 │ └─TableFullScan_31 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_20(Probe) 79920000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"))) └─IndexLookUp_19 9990.00 root ├─Selection_18(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_16 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_17(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ approx_count_distinct( tbl_9.col_46 ) as r0 , strcmp( tbl_4.col_16 , tbl_4.col_16 ) as r1 from tbl_9 right join tbl_4 on tbl_9.col_47 = tbl_4.col_17 where not( IsNull( tbl_9.col_48 ) ) order by r0,r1 limit 73; id estRows task access object operator info Projection_14 1.00 root Column#14, strcmp(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#15 └─Projection_54 1.00 root Column#14, inlj_inner_multi_pattern.tbl_4.col_16 └─TopN_17 1.00 root Column#14, Column#33, offset:0, count:73 └─Projection_55 1.00 root Column#14, inlj_inner_multi_pattern.tbl_4.col_16, strcmp(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#33 └─HashAgg_19 1.00 root funcs:approx_count_distinct(inlj_inner_multi_pattern.tbl_9.col_46)->Column#14, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_26 10000.00 root inner join, inner:Selection_25, outer key:Column#17, inner key:inlj_inner_multi_pattern.tbl_9.col_47, equal cond:eq(Column#17, inlj_inner_multi_pattern.tbl_9.col_47) ├─Projection_36(Build) 10000.00 root inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_17, datetime(6) BINARY)->Column#17 │ └─TableReader_38 10000.00 root data:TableFullScan_37 │ └─TableFullScan_37 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─Selection_25(Probe) 80000000.00 root not(isnull(inlj_inner_multi_pattern.tbl_9.col_48)) └─IndexLookUp_24 10000.00 root ├─IndexRangeScan_22(Build) 10000.00 cop[tikv] table:tbl_9, index:PRIMARY(col_47, col_51, col_44) range: decided by [eq(inlj_inner_multi_pattern.tbl_9.col_47, Column#17)], keep order:false, stats:pseudo └─TableRowIDScan_23(Probe) 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_1 , tbl_4 ) */ group_concat( distinct tbl_1.col_2 order by tbl_1.col_2 ) as r0 , tbl_1.col_4 as r1 , var_pop( tbl_4.col_16 ) as r2 , concat( tbl_4.col_16 , tbl_4.col_16 ) as r3 , tbl_1.col_6 as r4 from tbl_4 right join tbl_1 on tbl_4.col_16 = tbl_1.col_4 where not( tbl_4.col_17 = 'Bob' ); id estRows task access object operator info Projection_11 1.00 root Column#11, inlj_inner_multi_pattern.tbl_1.col_4, Column#12, concat(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#13, inlj_inner_multi_pattern.tbl_1.col_6 └─HashAgg_12 1.00 root funcs:group_concat(distinct Column#23 order by Column#24 separator ",")->Column#11, funcs:var_pop(Column#25)->Column#12, funcs:firstrow(Column#26)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(Column#27)->inlj_inner_multi_pattern.tbl_1.col_4, funcs:firstrow(Column#28)->inlj_inner_multi_pattern.tbl_1.col_6 └─Projection_45 10000.00 root cast(inlj_inner_multi_pattern.tbl_1.col_2, var_string(20))->Column#23, inlj_inner_multi_pattern.tbl_1.col_2, cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#25, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_1.col_4, inlj_inner_multi_pattern.tbl_1.col_6 └─IndexJoin_19 10000.00 root inner join, inner:Selection_18, outer key:Column#15, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(Column#15, inlj_inner_multi_pattern.tbl_4.col_16) ├─Projection_28(Build) 10000.00 root inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_1.col_4, inlj_inner_multi_pattern.tbl_1.col_6, cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#15 │ └─TableReader_30 10000.00 root data:TableFullScan_29 │ └─TableFullScan_29 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_18(Probe) 80000000.00 root not(eq(inlj_inner_multi_pattern.tbl_4.col_17, "Bob")) └─IndexLookUp_17 10000.00 root ├─IndexRangeScan_15(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#15)], keep order:false, stats:pseudo └─TableRowIDScan_16(Probe) 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_1 , tbl_4 ) */ stddev_samp( tbl_4.col_17 ) as r0 , tbl_4.col_17 as r1 , var_samp( tbl_4.col_16 ) as r2 from tbl_1 left join tbl_4 on tbl_1.col_4 = tbl_4.col_16 where not( IsNull( tbl_1.col_1 ) ) and not( tbl_4.col_17 between 'Charlie' and 'Bob' ) order by r0,r1,r2 limit 65; id estRows task access object operator info Projection_14 1.00 root Column#11, inlj_inner_multi_pattern.tbl_4.col_17, Column#12 └─TopN_17 1.00 root Column#11, inlj_inner_multi_pattern.tbl_4.col_17, Column#12, offset:0, count:65 └─HashAgg_22 1.00 root funcs:stddev_samp(Column#21)->Column#11, funcs:var_samp(Column#22)->Column#12, funcs:firstrow(Column#23)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_56 10000.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#21, cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#22, inlj_inner_multi_pattern.tbl_4.col_17 └─IndexJoin_29 10000.00 root inner join, inner:Selection_28, outer key:Column#13, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(Column#13, inlj_inner_multi_pattern.tbl_4.col_16) ├─Projection_38(Build) 9990.00 root cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#13 │ └─TableReader_41 9990.00 root data:Selection_40 │ └─Selection_40 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_1.col_1)) │ └─TableFullScan_39 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_28(Probe) 79920000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"))) └─IndexLookUp_27 10000.00 root ├─IndexRangeScan_25(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#13)], keep order:false, stats:pseudo └─TableRowIDScan_26(Probe) 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_6 ) */ position( tbl_4.col_16 in tbl_4.col_16 ) as r0 from tbl_4 join tbl_6 on tbl_4.col_17 = tbl_6.col_31 where tbl_4.col_16 in ( 'EmWPH5cZQK' ,'Rt!%(' ,'Rt!%(' ,'JJ_' ,'Rt!%(' ); id estRows task access object operator info Projection_9 30.00 root position(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#14 └─IndexJoin_15 30.00 root inner join, inner:Selection_14, outer key:inlj_inner_multi_pattern.tbl_6.col_31, inner key:inlj_inner_multi_pattern.tbl_4.col_17, equal cond:eq(inlj_inner_multi_pattern.tbl_6.col_31, inlj_inner_multi_pattern.tbl_4.col_17) ├─IndexReader_28(Build) 10000.00 root index:IndexFullScan_27 │ └─IndexFullScan_27 10000.00 cop[tikv] table:tbl_6, index:idx_10(col_27, col_31, col_34) keep order:false, stats:pseudo └─Selection_14(Probe) 240000.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_13 30.00 root ├─IndexRangeScan_10(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_6.col_31) in(inlj_inner_multi_pattern.tbl_4.col_16, EmWPH5cZQK, Rt!%(, Rt!%(, JJ_, Rt!%()], keep order:false, stats:pseudo └─Selection_12(Probe) 30.00 cop[tikv] in(inlj_inner_multi_pattern.tbl_4.col_16, "EmWPH5cZQK", "Rt!%(", "Rt!%(", "JJ_", "Rt!%(") └─TableRowIDScan_11 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_1 , tbl_9 ) */ substring_index( tbl_9.col_44 , ',' , 4 ) as r0 , to_base64( tbl_9.col_44 ) as r1 , lpad( tbl_9.col_50 , 5 , tbl_9.col_50 ) as r2 , from_base64( tbl_9.col_44 ) as r3 from tbl_1 right join tbl_9 on tbl_9.col_47 = tbl_1.col_6 where tbl_9.col_43 in ( select col_17 from tbl_4 where tbl_1.col_2 between 2124626257834469854 and 1529454899577851826 ) and IsNull( tbl_9.col_48 ) order by r0,r1,r2,r3; id estRows task access object operator info Sort_14 0.00 root Column#21, Column#22, Column#23, Column#24 └─Projection_16 0.00 root substring_index(inlj_inner_multi_pattern.tbl_9.col_44, ,, 4)->Column#21, to_base64(inlj_inner_multi_pattern.tbl_9.col_44)->Column#22, lpad(inlj_inner_multi_pattern.tbl_9.col_50, 5, inlj_inner_multi_pattern.tbl_9.col_50)->Column#23, from_base64(inlj_inner_multi_pattern.tbl_9.col_44)->Column#24 └─HashJoin_17 0.00 root semi join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_43, Column#29)] ├─Projection_33(Build) 10000.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#29 │ └─IndexReader_37 10000.00 root index:IndexFullScan_36 │ └─IndexFullScan_36 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) keep order:false, stats:pseudo └─IndexJoin_22(Probe) 0.00 root inner join, inner:Selection_21, outer key:inlj_inner_multi_pattern.tbl_1.col_6, inner key:inlj_inner_multi_pattern.tbl_9.col_47, equal cond:eq(inlj_inner_multi_pattern.tbl_1.col_6, inlj_inner_multi_pattern.tbl_9.col_47) ├─TableDual_32(Build) 0.00 root rows:0 └─Selection_21(Probe) 0.00 root isnull(inlj_inner_multi_pattern.tbl_9.col_48) └─IndexLookUp_20 0.00 root ├─IndexRangeScan_18(Build) 0.00 cop[tikv] table:tbl_9, index:PRIMARY(col_47, col_51, col_44) range: decided by [eq(inlj_inner_multi_pattern.tbl_9.col_47, inlj_inner_multi_pattern.tbl_1.col_6)], keep order:false, stats:pseudo └─TableRowIDScan_19(Probe) 0.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_3 , tbl_4 ) */ character_length( tbl_4.col_16 ) as r0 , approx_percentile( tbl_4.col_16 , 22 ) as r1 , tbl_3.col_11 as r2 from tbl_3 join tbl_4 on tbl_3.col_8 = tbl_4.col_16 where not( tbl_4.col_17 between 'David' and 'David' ) group by tbl_4.col_16 order by r0,r1,r2 limit 1; id estRows task access object operator info Projection_13 1.00 root character_length(inlj_inner_multi_pattern.tbl_4.col_16)->Column#14, Column#13, inlj_inner_multi_pattern.tbl_3.col_11 └─Projection_53 1.00 root Column#13, inlj_inner_multi_pattern.tbl_3.col_11, inlj_inner_multi_pattern.tbl_4.col_16 └─TopN_16 1.00 root Column#22, Column#13, inlj_inner_multi_pattern.tbl_3.col_11, offset:0, count:1 └─Projection_54 6393.60 root Column#13, inlj_inner_multi_pattern.tbl_3.col_11, inlj_inner_multi_pattern.tbl_4.col_16, character_length(inlj_inner_multi_pattern.tbl_4.col_16)->Column#22 └─HashAgg_18 6393.60 root group by:inlj_inner_multi_pattern.tbl_4.col_16, funcs:approx_percentile(inlj_inner_multi_pattern.tbl_4.col_16, 22)->Column#13, funcs:firstrow(inlj_inner_multi_pattern.tbl_3.col_11)->inlj_inner_multi_pattern.tbl_3.col_11, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_25 9990.00 root inner join, inner:Selection_24, outer key:inlj_inner_multi_pattern.tbl_3.col_8, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_3.col_8, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_36(Build) 10000.00 root data:TableFullScan_35 │ └─TableFullScan_35 10000.00 cop[tikv] table:tbl_3 keep order:false, stats:pseudo └─Selection_24(Probe) 79920000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "David"))) └─IndexLookUp_23 9990.00 root ├─Selection_22(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_20 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_3.col_8)], keep order:false, stats:pseudo └─TableRowIDScan_21(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ reverse( tbl_10.col_52 ) as r0 , ascii( tbl_10.col_52 ) as r1 , bit_or( tbl_10.col_52 ) as r2 , length( tbl_10.col_52 ) as r3 , var_pop( tbl_10.col_52 ) as r4 from tbl_4 join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where not( IsNull( tbl_4.col_17 ) ) order by r0,r1,r2,r3,r4; id estRows task access object operator info Sort_12 1.00 root Column#8, Column#9, Column#6, Column#10, Column#7 └─Projection_14 1.00 root reverse(inlj_inner_multi_pattern.tbl_10.col_52)->Column#8, ascii(to_binary(inlj_inner_multi_pattern.tbl_10.col_52))->Column#9, Column#6, length(to_binary(inlj_inner_multi_pattern.tbl_10.col_52))->Column#10, Column#7 └─HashAgg_15 1.00 root funcs:bit_or(Column#20)->Column#6, funcs:var_pop(Column#21)->Column#7, funcs:firstrow(Column#22)->inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_51 9990.00 root cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY)->Column#20, cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#21, inlj_inner_multi_pattern.tbl_10.col_52 └─IndexJoin_23 9990.00 root inner join, inner:Selection_22, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_34(Build) 10000.00 root data:TableFullScan_33 │ └─TableFullScan_33 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_22(Probe) 79920000.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_21 9990.00 root ├─Selection_20(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_18 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_19(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_10 ) */ tbl_9.col_49 as r0 , tbl_9.col_49 as r1 , reverse( tbl_9.col_46 ) as r2 , locate( tbl_9.col_44 , tbl_9.col_46 ) as r3 , tbl_9.col_48 as r4 from tbl_10 left join tbl_9 on tbl_10.col_52 = tbl_9.col_51 where tbl_9.col_48 in ( 'Alice' ,'David' ); id estRows task access object operator info Projection_10 10000.00 root inlj_inner_multi_pattern.tbl_9.col_49, inlj_inner_multi_pattern.tbl_9.col_49, reverse(inlj_inner_multi_pattern.tbl_9.col_46)->Column#13, locate(inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_46)->Column#14, inlj_inner_multi_pattern.tbl_9.col_48 └─IndexJoin_16 10000.00 root inner join, inner:Selection_15, outer key:Column#15, inner key:inlj_inner_multi_pattern.tbl_9.col_51, equal cond:eq(Column#15, inlj_inner_multi_pattern.tbl_9.col_51) ├─Projection_26(Build) 10000.00 root cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#15 │ └─TableReader_28 10000.00 root data:TableFullScan_27 │ └─TableFullScan_27 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_15(Probe) 80000000.00 root in(inlj_inner_multi_pattern.tbl_9.col_48, "Alice", "David") └─IndexLookUp_14 10000.00 root ├─IndexRangeScan_12(Build) 10000.00 cop[tikv] table:tbl_9, index:idx_17(col_51, col_45, col_46) range: decided by [eq(inlj_inner_multi_pattern.tbl_9.col_51, Column#15)], keep order:false, stats:pseudo └─TableRowIDScan_13(Probe) 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_9 ) */ concat( tbl_9.col_46 , tbl_9.col_44 ) as r0 , rpad( tbl_4.col_16 , 4 , tbl_4.col_16 ) as r1 from tbl_4 right join tbl_9 on tbl_4.col_17 = tbl_9.col_48 where tbl_4.col_16 in ( 'EmWPH5cZQK' ) or tbl_4.col_16 in ( ')Yc' ); id estRows task access object operator info Projection_9 16.00 root concat(inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_44)->Column#14, rpad(inlj_inner_multi_pattern.tbl_4.col_16, 4, inlj_inner_multi_pattern.tbl_4.col_16)->Column#15 └─IndexJoin_15 16.00 root inner join, inner:Selection_14, outer key:inlj_inner_multi_pattern.tbl_9.col_48, inner key:inlj_inner_multi_pattern.tbl_4.col_17, equal cond:eq(inlj_inner_multi_pattern.tbl_9.col_48, inlj_inner_multi_pattern.tbl_4.col_17) ├─Selection_25(Build) 8000.00 root not(isnull(inlj_inner_multi_pattern.tbl_9.col_48)) │ └─TableReader_27 10000.00 root data:TableFullScan_26 │ └─TableFullScan_26 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_14(Probe) 102400.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_13 16.00 root ├─IndexRangeScan_10(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_48) or(eq(inlj_inner_multi_pattern.tbl_4.col_16, EmWPH5cZQK), eq(inlj_inner_multi_pattern.tbl_4.col_16, )Yc))], keep order:false, stats:pseudo └─Selection_12(Probe) 16.00 cop[tikv] or(eq(inlj_inner_multi_pattern.tbl_4.col_16, "EmWPH5cZQK"), eq(inlj_inner_multi_pattern.tbl_4.col_16, ")Yc")) └─TableRowIDScan_11 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ sum( distinct tbl_4.col_16 ) as r0 , tbl_10.col_52 as r1 from tbl_4 join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where tbl_4.col_17 > 'Bob' order by r0,r1 limit 59; id estRows task access object operator info TopN_17 1.00 root Column#6, inlj_inner_multi_pattern.tbl_10.col_52, offset:0, count:59 └─HashAgg_22 1.00 root funcs:sum(distinct Column#13)->Column#6, funcs:firstrow(Column#14)->inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_58 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#13, inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_24 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52 └─IndexJoin_30 9990.00 root inner join, inner:Selection_29, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_41(Build) 10000.00 root data:TableFullScan_40 │ └─TableFullScan_40 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_29(Probe) 79920000.00 root gt(inlj_inner_multi_pattern.tbl_4.col_17, "Bob") └─IndexLookUp_28 9990.00 root ├─Selection_27(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_25 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_26(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ char( tbl_4.col_17 , tbl_4.col_17 using utf8mb4 ) as r0 , tbl_10.col_52 as r1 , char( tbl_10.col_52 , tbl_10.col_52 using utf8 ) as r2 , tbl_10.col_52 as r3 from tbl_4 right join tbl_10 on tbl_4.col_17 = tbl_10.col_52 where tbl_4.col_16 in ( 'B!k8k0pCBS9TGWB5wd2' ,'4uH~R0^-uQ@v1BzH' ) and not( IsNull( tbl_4.col_16 ) ) order by r0,r1,r2,r3 limit 74; id estRows task access object operator info Projection_11 16.00 root char_func(cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), utf8mb4)->Column#6, inlj_inner_multi_pattern.tbl_10.col_52, char_func(cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY), cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY), utf8)->Column#7, inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_35 16.00 root inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52 └─TopN_14 16.00 root Column#11, inlj_inner_multi_pattern.tbl_10.col_52, Column#12, offset:0, count:74 └─Projection_36 16.00 root inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52, char_func(cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), utf8mb4)->Column#11, char_func(cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY), cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY), utf8)->Column#12 └─IndexJoin_22 16.00 root inner join, inner:Selection_21, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_17, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_17) ├─TableReader_34(Build) 10000.00 root data:TableFullScan_33 │ └─TableFullScan_33 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_21(Probe) 128000.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_20 16.00 root ├─Selection_18(Build) 8000.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_16 8008.01 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52) in(inlj_inner_multi_pattern.tbl_4.col_16, B!k8k0pCBS9TGWB5wd2, 4uH~R0^-uQ@v1BzH)], keep order:false, stats:pseudo └─Selection_19(Probe) 16.00 cop[tikv] in(inlj_inner_multi_pattern.tbl_4.col_16, "B!k8k0pCBS9TGWB5wd2", "4uH~R0^-uQ@v1BzH") └─TableRowIDScan_17 8000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ stddev_samp( tbl_10.col_52 ) as r0 , tbl_4.col_16 as r1 , rpad( tbl_10.col_52 , 4 , tbl_10.col_52 ) as r2 , repeat( tbl_10.col_52 , tbl_10.col_52 ) as r3 , oct( tbl_10.col_52 ) as r4 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_4.col_17 <> 'Bob' ) or not( tbl_4.col_17 between 'David' and 'David' ) group by tbl_10.col_52 order by r0,r1,r2,r3,r4; id estRows task access object operator info Sort_11 8000.00 root Column#6, inlj_inner_multi_pattern.tbl_4.col_16, Column#7, Column#8, Column#9 └─Projection_13 8000.00 root Column#6, inlj_inner_multi_pattern.tbl_4.col_16, rpad(inlj_inner_multi_pattern.tbl_10.col_52, 4, inlj_inner_multi_pattern.tbl_10.col_52)->Column#7, repeat(inlj_inner_multi_pattern.tbl_10.col_52, cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY))->Column#8, oct(inlj_inner_multi_pattern.tbl_10.col_52)->Column#9 └─HashAgg_14 8000.00 root group by:Column#19, funcs:stddev_samp(Column#16)->Column#6, funcs:firstrow(Column#17)->inlj_inner_multi_pattern.tbl_10.col_52, funcs:firstrow(Column#18)->inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_32 9990.00 root cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#16, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52 └─IndexJoin_20 9990.00 root inner join, inner:Selection_19, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_31(Build) 10000.00 root data:TableFullScan_30 │ └─TableFullScan_30 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_19(Probe) 79920000.00 root or(not(ne(inlj_inner_multi_pattern.tbl_4.col_17, "Bob")), not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "David")))) └─IndexLookUp_18 9990.00 root ├─Selection_17(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_15 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_16(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_1 ) */ tbl_1.col_6 as r0 , make_set( 4 , tbl_9.col_46 , tbl_9.col_50 ) as r1 , tbl_9.col_47 as r2 from tbl_9 join tbl_1 on tbl_9.col_51 = tbl_1.col_5 where IsNull( tbl_9.col_48 ) order by r0,r1,r2 limit 14; id estRows task access object operator info Projection_14 14.00 root inlj_inner_multi_pattern.tbl_1.col_6, make_set(4, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_50)->Column#18, inlj_inner_multi_pattern.tbl_9.col_47 └─Projection_38 14.00 root inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_47, inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_1.col_6 └─TopN_17 14.00 root inlj_inner_multi_pattern.tbl_1.col_6, Column#26, inlj_inner_multi_pattern.tbl_9.col_47, offset:0, count:14 └─Projection_39 10000.00 root inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_47, inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_1.col_6, make_set(4, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_50)->Column#26 └─IndexJoin_24 10000.00 root inner join, inner:Selection_23, outer key:Column#19, inner key:inlj_inner_multi_pattern.tbl_9.col_51, equal cond:eq(Column#19, inlj_inner_multi_pattern.tbl_9.col_51) ├─Projection_34(Build) 10000.00 root inlj_inner_multi_pattern.tbl_1.col_6, cast(inlj_inner_multi_pattern.tbl_1.col_5, double BINARY)->Column#19 │ └─TableReader_36 10000.00 root data:TableFullScan_35 │ └─TableFullScan_35 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_23(Probe) 80000000.00 root isnull(inlj_inner_multi_pattern.tbl_9.col_48) └─IndexLookUp_22 10000.00 root ├─IndexRangeScan_20(Build) 10000.00 cop[tikv] table:tbl_9, index:idx_17(col_51, col_45, col_46) range: decided by [eq(inlj_inner_multi_pattern.tbl_9.col_51, Column#19)], keep order:false, stats:pseudo └─TableRowIDScan_21(Probe) 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ max( distinct tbl_4.col_16 ) as r0 , bit_xor( tbl_4.col_16 ) as r1 , lcase( tbl_4.col_16 ) as r2 , min( tbl_10.col_52 ) as r3 from tbl_10 left join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where tbl_4.col_16 < '' and not( tbl_4.col_17 <> 'David' ); id estRows task access object operator info Projection_10 1.00 root Column#6, Column#7, lcase(inlj_inner_multi_pattern.tbl_4.col_16)->Column#9, Column#8 └─HashAgg_11 1.00 root funcs:max(distinct Column#17)->Column#6, funcs:bit_xor(Column#18)->Column#7, funcs:min(Column#19)->Column#8, funcs:firstrow(Column#20)->inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_51 3323.33 root inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY)->Column#18, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_13 3323.33 root inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_20 3323.33 root inner join, inner:Selection_19, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_32(Build) 10000.00 root data:TableFullScan_31 │ └─TableFullScan_31 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_19(Probe) 26586666.67 root not(ne(inlj_inner_multi_pattern.tbl_4.col_17, "David")) └─IndexLookUp_18 3323.33 root ├─Selection_16(Build) 10000.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_14 30090.27 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─Selection_17(Probe) 3323.33 cop[tikv] lt(inlj_inner_multi_pattern.tbl_4.col_16, "") └─TableRowIDScan_15 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ stddev_samp( tbl_4.col_16 ) as r0 from tbl_4 right join tbl_10 on tbl_4.col_17 = tbl_10.col_52 where tbl_4.col_16 in ( 'Rt!%(' ,'f9S*4p3R#' ,'Rt!%(' ,'B!k8k0pCBS9TGWB5wd2' ) and tbl_4.col_17 between 'Bob' and 'Bob'; id estRows task access object operator info StreamAgg_11 1.00 root funcs:stddev_samp(Column#13)->Column#6 └─Projection_44 30.00 root cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#13 └─IndexJoin_34 30.00 root inner join, inner:Selection_33, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_17, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_17) ├─TableReader_28(Build) 10000.00 root data:TableFullScan_27 │ └─TableFullScan_27 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_33(Probe) 240000.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"), not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_32 30.00 root ├─IndexRangeScan_29(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52) in(inlj_inner_multi_pattern.tbl_4.col_16, Rt!%(, f9S*4p3R#, Rt!%(, B!k8k0pCBS9TGWB5wd2)], keep order:false, stats:pseudo └─Selection_31(Probe) 30.00 cop[tikv] in(inlj_inner_multi_pattern.tbl_4.col_16, "Rt!%(", "f9S*4p3R#", "Rt!%(", "B!k8k0pCBS9TGWB5wd2") └─TableRowIDScan_30 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_1 ) */ min( distinct tbl_1.col_2 ) as r0 from tbl_4 right join tbl_1 on tbl_4.col_16 = tbl_1.col_5 where not( tbl_4.col_17 between 'Bob' and 'Alice' ) group by tbl_1.col_2; id estRows task access object operator info HashAgg_11 8000.00 root group by:inlj_inner_multi_pattern.tbl_1.col_2, funcs:min(distinct inlj_inner_multi_pattern.tbl_1.col_2)->Column#11 └─IndexJoin_20 9990.00 root inner join, inner:Selection_19, outer key:inlj_inner_multi_pattern.tbl_1.col_5, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_1.col_5, inlj_inner_multi_pattern.tbl_4.col_16) ├─IndexReader_33(Build) 10000.00 root index:IndexFullScan_32 │ └─IndexFullScan_32 10000.00 cop[tikv] table:tbl_1, index:PRIMARY(col_2, col_5) keep order:false, stats:pseudo └─Selection_19(Probe) 79920000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Alice"))) └─IndexLookUp_18 9990.00 root ├─Selection_17(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_15 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_1.col_5)], keep order:false, stats:pseudo └─TableRowIDScan_16(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ tbl_4.col_17 as r0 , right( tbl_10.col_52 , 4 ) as r1 , char( tbl_4.col_17 , tbl_4.col_17 using utf8 ) as r2 from tbl_10 left join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where tbl_4.col_17 between 'Alice' and 'David' order by r0,r1,r2; id estRows task access object operator info Sort_9 9990.00 root inlj_inner_multi_pattern.tbl_4.col_17, Column#6, Column#7 └─Projection_11 9990.00 root inlj_inner_multi_pattern.tbl_4.col_17, right(inlj_inner_multi_pattern.tbl_10.col_52, 4)->Column#6, char_func(cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), utf8)->Column#7 └─IndexJoin_17 9990.00 root inner join, inner:Selection_16, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_28(Build) 10000.00 root data:TableFullScan_27 │ └─TableFullScan_27 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_16(Probe) 79920000.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "Alice"), le(inlj_inner_multi_pattern.tbl_4.col_17, "David") └─IndexLookUp_15 9990.00 root ├─Selection_14(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_12 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_13(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ tbl_10.col_52 as r0 , tbl_4.col_17 as r1 from tbl_10 right join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_10.col_52 <= 't文髻=CXo檽睙F=团4鴶)瘃观' ) and tbl_4.col_17 between 'Alice' and 'Charlie'; id estRows task access object operator info IndexJoin_14 4166.67 root inner join, inner:Selection_13, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_26(Build) 3333.33 root data:Selection_25 │ └─Selection_25 3333.33 cop[tikv] gt(inlj_inner_multi_pattern.tbl_10.col_52, "t文髻=CXo檽睙F=团4鴶)瘃观") │ └─TableFullScan_24 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_13(Probe) 26640000.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "Alice"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie") └─IndexLookUp_12 4166.67 root ├─Selection_11(Build) 4166.67 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_9 4170.84 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_10(Probe) 4166.67 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_1 ) */ oct( tbl_1.col_2 ) as r0 , replace( tbl_4.col_16 , tbl_4.col_16 , tbl_4.col_16 ) as r1 , bit_or( tbl_1.col_2 ) as r2 , tbl_4.col_16 as r3 from tbl_1 join tbl_4 on tbl_1.col_4 = tbl_4.col_16 where not( tbl_4.col_17 != 'Charlie' ) order by r0,r1,r2,r3 limit 71; id estRows task access object operator info Projection_15 1.00 root oct(inlj_inner_multi_pattern.tbl_1.col_2)->Column#12, replace(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#13, Column#11, inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_53 1.00 root Column#11, inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_4.col_16 └─TopN_18 1.00 root Column#24, Column#25, Column#11, inlj_inner_multi_pattern.tbl_4.col_16, offset:0, count:71 └─Projection_54 1.00 root Column#11, inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_4.col_16, oct(inlj_inner_multi_pattern.tbl_1.col_2)->Column#24, replace(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#25 └─HashAgg_20 1.00 root funcs:bit_or(inlj_inner_multi_pattern.tbl_1.col_2)->Column#11, funcs:firstrow(inlj_inner_multi_pattern.tbl_1.col_2)->inlj_inner_multi_pattern.tbl_1.col_2, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_22 10000.00 root inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_27 10000.00 root inner join, inner:Selection_26, outer key:Column#16, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(Column#16, inlj_inner_multi_pattern.tbl_4.col_16) ├─Projection_36(Build) 10000.00 root inlj_inner_multi_pattern.tbl_1.col_2, cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#16 │ └─TableReader_38 10000.00 root data:TableFullScan_37 │ └─TableFullScan_37 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_26(Probe) 80000000.00 root not(ne(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie")) └─IndexLookUp_25 10000.00 root ├─IndexRangeScan_23(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#16)], keep order:false, stats:pseudo └─TableRowIDScan_24(Probe) 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_1 , tbl_4 ) */ tbl_1.col_2 as r0 , tbl_1.col_1 as r1 , bit_and( tbl_4.col_16 ) as r2 , tbl_1.col_6 as r3 from tbl_1 join tbl_4 on tbl_1.col_4 = tbl_4.col_16 where tbl_4.col_17 between 'David' and 'David' and not( tbl_4.col_17 != 'Charlie' ) group by tbl_4.col_16 order by r0,r1,r2,r3; id estRows task access object operator info Sort_13 6400.00 root inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_1.col_1, Column#11, inlj_inner_multi_pattern.tbl_1.col_6 └─Projection_15 6400.00 root inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_1.col_1, Column#11, inlj_inner_multi_pattern.tbl_1.col_6 └─HashAgg_16 6400.00 root group by:Column#24, funcs:bit_and(Column#20)->Column#11, funcs:firstrow(Column#21)->inlj_inner_multi_pattern.tbl_1.col_1, funcs:firstrow(Column#22)->inlj_inner_multi_pattern.tbl_1.col_2, funcs:firstrow(Column#23)->inlj_inner_multi_pattern.tbl_1.col_6 └─Projection_51 10000.00 root cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY)->Column#20, inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_1.col_6, inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_18 10000.00 root inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_1.col_6, inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_23 10000.00 root inner join, inner:Selection_22, outer key:Column#12, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(Column#12, inlj_inner_multi_pattern.tbl_4.col_16) ├─Projection_32(Build) 10000.00 root inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_1.col_6, cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#12 │ └─TableReader_34 10000.00 root data:TableFullScan_33 │ └─TableFullScan_33 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_22(Probe) 80000000.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "David"), not(ne(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie")) └─IndexLookUp_21 10000.00 root ├─IndexRangeScan_19(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#12)], keep order:false, stats:pseudo └─TableRowIDScan_20(Probe) 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ sum( tbl_4.col_16 ) as r0 , stddev_pop( tbl_4.col_16 ) as r1 , tbl_4.col_16 as r2 , trim( tbl_9.col_46 ) as r3 , approx_count_distinct( tbl_9.col_49 ) as r4 from tbl_4 join tbl_9 on tbl_4.col_16 = tbl_9.col_46 where not( tbl_4.col_17 in ( 'Alice' ,'Charlie' ,'David' ) ) group by tbl_4.col_16,tbl_9.col_49; id estRows task access object operator info Projection_11 8000.00 root Column#14, Column#15, inlj_inner_multi_pattern.tbl_4.col_16, trim(inlj_inner_multi_pattern.tbl_9.col_46)->Column#17, Column#16 └─HashAgg_12 8000.00 root group by:Column#27, Column#28, funcs:sum(Column#22)->Column#14, funcs:stddev_pop(Column#23)->Column#15, funcs:approx_count_distinct(Column#24)->Column#16, funcs:firstrow(Column#25)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(Column#26)->inlj_inner_multi_pattern.tbl_9.col_46 └─Projection_31 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#22, cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#23, inlj_inner_multi_pattern.tbl_9.col_49, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_49 └─Projection_13 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_49 └─IndexJoin_19 9990.00 root inner join, inner:Selection_18, outer key:inlj_inner_multi_pattern.tbl_9.col_46, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_30(Build) 10000.00 root data:TableFullScan_29 │ └─TableFullScan_29 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_18(Probe) 79920000.00 root not(in(inlj_inner_multi_pattern.tbl_4.col_17, "Alice", "Charlie", "David")) └─IndexLookUp_17 9990.00 root ├─Selection_16(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_14 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_46)], keep order:false, stats:pseudo └─TableRowIDScan_15(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ sum( tbl_4.col_17 ) as r0 , tbl_10.col_52 as r1 from tbl_4 join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where tbl_4.col_17 in ( 'Charlie' ,'David' ,'Bob' ,'David' ,'David' ) group by tbl_4.col_17; id estRows task access object operator info HashAgg_12 6393.60 root group by:Column#12, funcs:sum(Column#10)->Column#6, funcs:firstrow(Column#11)->inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_31 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#10, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_13 9990.00 root inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52 └─IndexJoin_19 9990.00 root inner join, inner:Selection_18, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_30(Build) 10000.00 root data:TableFullScan_29 │ └─TableFullScan_29 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_18(Probe) 79920000.00 root in(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie", "David", "Bob", "David", "David") └─IndexLookUp_17 9990.00 root ├─Selection_16(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_14 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_15(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_10 ) */ sum( distinct tbl_10.col_52 ) as r0 , reverse( tbl_10.col_52 ) as r1 , left( tbl_9.col_44 , 0 ) as r2 from tbl_9 right join tbl_10 on tbl_9.col_44 = tbl_10.col_52 where tbl_9.col_51 in ( select col_52 from tbl_10 where tbl_9.col_44 between 'xXk!X' and '#)-n$c7W' or tbl_9.col_44 in ( select col_40 from tbl_8 where not( tbl_9.col_43 >= 7100.241665472305 ) and tbl_10.col_52 in ( select col_41 from tbl_8 where tbl_9.col_43 > 7100.241665472305 and IsNull( tbl_9.col_45 ) ) ) ) and not( tbl_9.col_48 != 'Bob' ) group by tbl_10.col_52; id estRows task access object operator info Projection_23 8000.00 root Column#30, reverse(inlj_inner_multi_pattern.tbl_10.col_52)->Column#31, left(inlj_inner_multi_pattern.tbl_9.col_44, 0)->Column#32 └─HashAgg_24 8000.00 root group by:Column#44, funcs:sum(distinct Column#41)->Column#30, funcs:firstrow(Column#42)->inlj_inner_multi_pattern.tbl_9.col_44, funcs:firstrow(Column#43)->inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_58 10000.00 root cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#41, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52 └─Apply_26 10000.00 root semi join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_51, Column#35)], other cond:or(and(ge(inlj_inner_multi_pattern.tbl_9.col_44, "xXk!X"), le(inlj_inner_multi_pattern.tbl_9.col_44, "#)-n$c7W")), Column#29) ├─Projection_27(Build) 10000.00 root inlj_inner_multi_pattern.tbl_9.col_43, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_45, inlj_inner_multi_pattern.tbl_9.col_51, inlj_inner_multi_pattern.tbl_10.col_52 │ └─IndexJoin_32 10000.00 root inner join, inner:Selection_31, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_9.col_44, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_9.col_44) │ ├─TableReader_42(Build) 10000.00 root data:TableFullScan_41 │ │ └─TableFullScan_41 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo │ └─Selection_31(Probe) 80000000.00 root not(ne(inlj_inner_multi_pattern.tbl_9.col_48, "Bob")) │ └─IndexLookUp_30 10000.00 root │ ├─IndexRangeScan_28(Build) 10000.00 cop[tikv] table:tbl_9, index:idx_18(col_44, col_43) range: decided by [eq(inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo │ └─TableRowIDScan_29(Probe) 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Projection_43(Probe) 100000000.00 root Column#29, cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#35 └─Apply_45 100000000.00 root CARTESIAN left outer semi join, other cond:eq(cast(inlj_inner_multi_pattern.tbl_9.col_44, json BINARY), inlj_inner_multi_pattern.tbl_8.col_40) ├─TableReader_47(Build) 100000000.00 root data:TableFullScan_46 │ └─TableFullScan_46 100000000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─HashJoin_48(Probe) 640000000000.00 root CARTESIAN semi join ├─IndexReader_57(Build) 800000000000.00 root index:Selection_56 │ └─Selection_56 800000000000.00 cop[tikv] eq(cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY), cast(inlj_inner_multi_pattern.tbl_8.col_41, double BINARY)), gt(inlj_inner_multi_pattern.tbl_9.col_43, 7100.241665472305), isnull(inlj_inner_multi_pattern.tbl_9.col_45), lt(inlj_inner_multi_pattern.tbl_9.col_43, 7100.241665472305) │ └─IndexFullScan_55 1000000000000.00 cop[tikv] table:tbl_8, index:PRIMARY(col_41, col_39) keep order:false, stats:pseudo └─TableReader_51(Probe) 800000000000.00 root data:Selection_50 └─Selection_50 800000000000.00 cop[tikv] lt(inlj_inner_multi_pattern.tbl_9.col_43, 7100.241665472305) └─TableFullScan_49 1000000000000.00 cop[tikv] table:tbl_8 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_3 , tbl_4 ) */ replace( tbl_4.col_16 , tbl_4.col_16 , tbl_4.col_16 ) as r0 , lower( tbl_3.col_14 ) as r1 , avg( tbl_4.col_17 ) as r2 , tbl_3.col_15 as r3 from tbl_3 left join tbl_4 on tbl_3.col_8 = tbl_4.col_16 where not( tbl_4.col_17 in ( 'David' ) ) order by r0,r1,r2,r3 limit 16; id estRows task access object operator info Projection_12 1.00 root replace(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#14, lower(inlj_inner_multi_pattern.tbl_3.col_14)->Column#15, Column#13, inlj_inner_multi_pattern.tbl_3.col_15 └─Projection_52 1.00 root Column#13, inlj_inner_multi_pattern.tbl_3.col_14, inlj_inner_multi_pattern.tbl_3.col_15, inlj_inner_multi_pattern.tbl_4.col_16 └─TopN_15 1.00 root Column#28, Column#29, Column#13, inlj_inner_multi_pattern.tbl_3.col_15, offset:0, count:16 └─Projection_53 1.00 root Column#13, inlj_inner_multi_pattern.tbl_3.col_14, inlj_inner_multi_pattern.tbl_3.col_15, inlj_inner_multi_pattern.tbl_4.col_16, replace(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#28, lower(inlj_inner_multi_pattern.tbl_3.col_14)->Column#29 └─HashAgg_17 1.00 root funcs:avg(Column#24)->Column#13, funcs:firstrow(Column#25)->inlj_inner_multi_pattern.tbl_3.col_14, funcs:firstrow(Column#26)->inlj_inner_multi_pattern.tbl_3.col_15, funcs:firstrow(Column#27)->inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_51 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#24, inlj_inner_multi_pattern.tbl_3.col_14, inlj_inner_multi_pattern.tbl_3.col_15, inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_24 9990.00 root inner join, inner:Selection_23, outer key:inlj_inner_multi_pattern.tbl_3.col_8, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_3.col_8, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_35(Build) 10000.00 root data:TableFullScan_34 │ └─TableFullScan_34 10000.00 cop[tikv] table:tbl_3 keep order:false, stats:pseudo └─Selection_23(Probe) 79920000.00 root not(eq(inlj_inner_multi_pattern.tbl_4.col_17, "David")) └─IndexLookUp_22 9990.00 root ├─Selection_21(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_19 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_3.col_8)], keep order:false, stats:pseudo └─TableRowIDScan_20(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ elt(2, tbl_4.col_16 , tbl_4.col_16 ) as r0 , group_concat( distinct tbl_4.col_16 order by tbl_4.col_16 ) as r1 from tbl_4 right join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where tbl_4.col_17 in ( 'Bob' ,'Charlie' ) group by tbl_4.col_16 order by r0,r1 limit 66; id estRows task access object operator info Projection_13 66.00 root elt(2, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#7, Column#6 └─Projection_60 66.00 root Column#6, inlj_inner_multi_pattern.tbl_4.col_16 └─TopN_16 66.00 root Column#15, Column#6, offset:0, count:66 └─Projection_61 6393.60 root Column#6, inlj_inner_multi_pattern.tbl_4.col_16, elt(2, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#15 └─HashAgg_18 6393.60 root group by:inlj_inner_multi_pattern.tbl_4.col_16, funcs:group_concat(distinct inlj_inner_multi_pattern.tbl_4.col_16 order by inlj_inner_multi_pattern.tbl_4.col_16 separator ",")->Column#6, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_26 9990.00 root inner join, inner:Selection_25, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_37(Build) 10000.00 root data:TableFullScan_36 │ └─TableFullScan_36 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_25(Probe) 79920000.00 root in(inlj_inner_multi_pattern.tbl_4.col_17, "Bob", "Charlie") └─IndexLookUp_24 9990.00 root ├─Selection_23(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_21 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_22(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_2 , tbl_9 ) */ bit_xor( tbl_2.col_7 ) as r0 , var_samp( tbl_9.col_45 ) as r1 from tbl_9 join tbl_2 on tbl_9.col_47 = tbl_2.col_7 where not( tbl_9.col_48 >= 'David' ) and not( tbl_2.col_7 <= '4' ) order by r0,r1 limit 59; id estRows task access object operator info TopN_18 1.00 root Column#12, Column#13, offset:0, count:59 └─HashAgg_23 1.00 root funcs:bit_xor(Column#30)->Column#12, funcs:var_samp(Column#31)->Column#13 └─Projection_63 4166.67 root cast(inlj_inner_multi_pattern.tbl_2.col_7, bigint(255) BINARY)->Column#30, inlj_inner_multi_pattern.tbl_9.col_45 └─Projection_25 4166.67 root inlj_inner_multi_pattern.tbl_9.col_45, inlj_inner_multi_pattern.tbl_2.col_7 └─IndexJoin_30 4166.67 root inner join, inner:Selection_29, outer key:Column#14, inner key:inlj_inner_multi_pattern.tbl_9.col_47, equal cond:eq(Column#14, inlj_inner_multi_pattern.tbl_9.col_47) ├─Projection_40(Build) 3333.33 root inlj_inner_multi_pattern.tbl_2.col_7, cast(inlj_inner_multi_pattern.tbl_2.col_7, datetime(6) BINARY)->Column#14 │ └─TableReader_43 3333.33 root data:Selection_42 │ └─Selection_42 3333.33 cop[tikv] gt(inlj_inner_multi_pattern.tbl_2.col_7, "4") │ └─TableRangeScan_41 3333.33 cop[tikv] table:tbl_2 range:(0x34,+inf], keep order:false, stats:pseudo └─Selection_29(Probe) 26666666.67 root not(ge(inlj_inner_multi_pattern.tbl_9.col_48, "David")) └─IndexLookUp_28 4166.67 root ├─IndexRangeScan_26(Build) 4166.67 cop[tikv] table:tbl_9, index:PRIMARY(col_47, col_51, col_44) range: decided by [eq(inlj_inner_multi_pattern.tbl_9.col_47, Column#14)], keep order:false, stats:pseudo └─TableRowIDScan_27(Probe) 4166.67 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ tbl_4.col_16 as r0 , replace( tbl_10.col_52 , tbl_10.col_52 , tbl_10.col_52 ) as r1 , count( distinct tbl_10.col_52 ) as r2 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_4.col_17 = 'David' ) group by tbl_10.col_52; id estRows task access object operator info Projection_10 8000.00 root inlj_inner_multi_pattern.tbl_4.col_16, replace(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52)->Column#7, Column#6 └─HashAgg_11 8000.00 root group by:inlj_inner_multi_pattern.tbl_10.col_52, funcs:count(distinct inlj_inner_multi_pattern.tbl_10.col_52)->Column#6, funcs:firstrow(inlj_inner_multi_pattern.tbl_10.col_52)->inlj_inner_multi_pattern.tbl_10.col_52, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_17 9990.00 root inner join, inner:Selection_16, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_28(Build) 10000.00 root data:TableFullScan_27 │ └─TableFullScan_27 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_16(Probe) 79920000.00 root not(eq(inlj_inner_multi_pattern.tbl_4.col_17, "David")) └─IndexLookUp_15 9990.00 root ├─Selection_14(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_12 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_13(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ tbl_4.col_16 as r0 , ltrim( tbl_4.col_16 ) as r1 , count( tbl_10.col_52 ) as r2 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where IsNull( tbl_4.col_17 ) and not( tbl_4.col_16 in ( 'Rt!%(' ,'Rt!%(' ,'EmWPH5cZQK' ,null ,'B!k8k0pCBS9TGWB5wd2' ) ); id estRows task access object operator info Projection_11 1.00 root inlj_inner_multi_pattern.tbl_4.col_16, ltrim(inlj_inner_multi_pattern.tbl_4.col_16)->Column#7, Column#6 └─StreamAgg_13 1.00 root funcs:count(inlj_inner_multi_pattern.tbl_10.col_52)->Column#6, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_14 0.00 root inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_21 0.00 root inner join, inner:Selection_20, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_33(Build) 10000.00 root data:TableFullScan_32 │ └─TableFullScan_32 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_20(Probe) 0.00 root isnull(inlj_inner_multi_pattern.tbl_4.col_17) └─IndexLookUp_19 0.00 root ├─Selection_17(Build) 0.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_15 0.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─Selection_18(Probe) 0.00 cop[tikv] not(in(inlj_inner_multi_pattern.tbl_4.col_16, "Rt!%(", "Rt!%(", "EmWPH5cZQK", NULL, "B!k8k0pCBS9TGWB5wd2")) └─TableRowIDScan_16 0.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_1 ) */ count( tbl_1.col_2 ) as r0 , to_base64( tbl_1.col_5 ) as r1 , trim( tbl_1.col_1 ) as r2 , tbl_4.col_17 as r3 , var_samp( tbl_1.col_2 ) as r4 from tbl_4 right join tbl_1 on tbl_4.col_16 = tbl_1.col_4 where not( IsNull( tbl_4.col_17 ) ) group by tbl_1.col_2 order by r0,r1,r2,r3,r4 limit 37; id estRows task access object operator info Projection_14 37.00 root Column#11, to_base64(to_binary(inlj_inner_multi_pattern.tbl_1.col_5))->Column#13, trim(inlj_inner_multi_pattern.tbl_1.col_1)->Column#14, inlj_inner_multi_pattern.tbl_4.col_17, Column#12 └─Projection_63 37.00 root Column#11, Column#12, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_5 └─TopN_17 37.00 root Column#11, Column#36, Column#37, inlj_inner_multi_pattern.tbl_4.col_17, Column#12, offset:0, count:37 └─Projection_64 8000.00 root Column#11, Column#12, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_5, to_base64(to_binary(inlj_inner_multi_pattern.tbl_1.col_5))->Column#36, trim(inlj_inner_multi_pattern.tbl_1.col_1)->Column#37 └─HashAgg_19 8000.00 root group by:Column#35, funcs:count(Column#30)->Column#11, funcs:var_samp(Column#31)->Column#12, funcs:firstrow(Column#32)->inlj_inner_multi_pattern.tbl_4.col_17, funcs:firstrow(Column#33)->inlj_inner_multi_pattern.tbl_1.col_1, funcs:firstrow(Column#34)->inlj_inner_multi_pattern.tbl_1.col_5 └─Projection_62 10000.00 root inlj_inner_multi_pattern.tbl_1.col_2, cast(inlj_inner_multi_pattern.tbl_1.col_2, double UNSIGNED BINARY)->Column#31, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_5, inlj_inner_multi_pattern.tbl_1.col_2 └─IndexJoin_27 10000.00 root inner join, inner:Selection_26, outer key:Column#17, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(Column#17, inlj_inner_multi_pattern.tbl_4.col_16) ├─Projection_36(Build) 10000.00 root inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_1.col_5, cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#17 │ └─TableReader_38 10000.00 root data:TableFullScan_37 │ └─TableFullScan_37 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_26(Probe) 80000000.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_25 10000.00 root ├─IndexRangeScan_23(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#17)], keep order:false, stats:pseudo └─TableRowIDScan_24(Probe) 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_9 ) */ from_base64( tbl_9.col_44 ) as r0 , bit_xor( tbl_9.col_45 ) as r1 , min( distinct tbl_4.col_17 ) as r2 , tbl_9.col_48 as r3 , bit_or( tbl_4.col_16 ) as r4 from tbl_4 join tbl_9 on tbl_4.col_16 = tbl_9.col_46 where not( IsNull( tbl_4.col_17 ) ) or not( tbl_4.col_17 in ( 'David' ,'David' ) ) group by tbl_9.col_45,tbl_4.col_16,tbl_4.col_17; id estRows task access object operator info Projection_11 8000.00 root from_base64(inlj_inner_multi_pattern.tbl_9.col_44)->Column#17, Column#14, Column#15, inlj_inner_multi_pattern.tbl_9.col_48, Column#16 └─HashAgg_12 8000.00 root group by:Column#27, Column#28, Column#29, funcs:bit_xor(Column#22)->Column#14, funcs:min(distinct Column#23)->Column#15, funcs:bit_or(Column#24)->Column#16, funcs:firstrow(Column#25)->inlj_inner_multi_pattern.tbl_9.col_44, funcs:firstrow(Column#26)->inlj_inner_multi_pattern.tbl_9.col_48 └─Projection_31 9990.00 root cast(inlj_inner_multi_pattern.tbl_9.col_45, bigint(22) BINARY)->Column#22, inlj_inner_multi_pattern.tbl_4.col_17, cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY)->Column#24, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_48, inlj_inner_multi_pattern.tbl_9.col_45, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_13 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_45, inlj_inner_multi_pattern.tbl_9.col_48 └─IndexJoin_19 9990.00 root inner join, inner:Selection_18, outer key:inlj_inner_multi_pattern.tbl_9.col_46, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_30(Build) 10000.00 root data:TableFullScan_29 │ └─TableFullScan_29 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_18(Probe) 79920000.00 root or(not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)), not(in(inlj_inner_multi_pattern.tbl_4.col_17, "David", "David"))) └─IndexLookUp_17 9990.00 root ├─Selection_16(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_14 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_46)], keep order:false, stats:pseudo └─TableRowIDScan_15(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ export_set( 6 , tbl_10.col_52 , tbl_10.col_52 , '-', 8) as r0 from tbl_10 right join tbl_4 on tbl_10.col_52 = tbl_4.col_17 where not( tbl_10.col_52 between '獑!5H(#g慭琷l' and '' ) and not( tbl_4.col_16 <> 'Rt!%(' ) order by r0 limit 30; id estRows task access object operator info Projection_12 10.00 root export_set(6, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52, -, 8)->Column#6 └─Projection_37 10.00 root inlj_inner_multi_pattern.tbl_10.col_52 └─TopN_15 10.00 root Column#10, offset:0, count:30 └─Projection_38 10.00 root inlj_inner_multi_pattern.tbl_10.col_52, export_set(6, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52, -, 8)->Column#10 └─IndexJoin_23 10.00 root inner join, inner:Selection_22, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_17, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_17) ├─TableReader_35(Build) 9990.00 root data:Selection_34 │ └─Selection_34 9990.00 cop[tikv] or(lt(inlj_inner_multi_pattern.tbl_10.col_52, "獑!5H(#g慭琷l"), gt(inlj_inner_multi_pattern.tbl_10.col_52, "")) │ └─TableFullScan_33 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_22(Probe) 79920.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_21 10.00 root ├─IndexRangeScan_18(Build) 9990.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52) eq(inlj_inner_multi_pattern.tbl_4.col_16, Rt!%()], keep order:false, stats:pseudo └─Selection_20(Probe) 10.00 cop[tikv] eq(inlj_inner_multi_pattern.tbl_4.col_16, "Rt!%(") └─TableRowIDScan_19 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_5 , tbl_4 ) */ approx_percentile( tbl_5.col_21 , 66 ) as r0 , mid( tbl_5.col_20 , 0 , 0 ) as r1 from tbl_4 right join tbl_5 on tbl_5.col_22 = tbl_4.col_16 where not( tbl_4.col_17 between 'Alice' and 'Alice' ) and not( tbl_4.col_17 between 'Charlie' and 'Charlie' ) order by r0,r1 limit 58; id estRows task access object operator info Projection_13 1.00 root Column#14, mid(cast(inlj_inner_multi_pattern.tbl_5.col_20, var_string(5)), 0, 0)->Column#15 └─Projection_54 1.00 root Column#14, inlj_inner_multi_pattern.tbl_5.col_20 └─TopN_16 1.00 root Column#14, Column#23, offset:0, count:58 └─Projection_55 1.00 root Column#14, inlj_inner_multi_pattern.tbl_5.col_20, mid(cast(inlj_inner_multi_pattern.tbl_5.col_20, var_string(5)), 0, 0)->Column#23 └─HashAgg_18 1.00 root funcs:approx_percentile(inlj_inner_multi_pattern.tbl_5.col_21, 66)->Column#14, funcs:firstrow(inlj_inner_multi_pattern.tbl_5.col_20)->inlj_inner_multi_pattern.tbl_5.col_20 └─IndexJoin_26 9990.00 root inner join, inner:Selection_25, outer key:inlj_inner_multi_pattern.tbl_5.col_22, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_5.col_22, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_37(Build) 10000.00 root data:TableFullScan_36 │ └─TableFullScan_36 10000.00 cop[tikv] table:tbl_5 keep order:false, stats:pseudo └─Selection_25(Probe) 79920000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Alice"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Alice"))), not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"))) └─IndexLookUp_24 9990.00 root ├─Selection_23(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_21 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_5.col_22)], keep order:false, stats:pseudo └─TableRowIDScan_22(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_8 , tbl_4 ) */ weight_string( tbl_4.col_16 ) as r0 , make_set( 1 , tbl_4.col_16 , tbl_4.col_16 ) as r1 from tbl_8 right join tbl_4 on tbl_8.col_37 = tbl_4.col_16 where tbl_8.col_42 between 'WqvBAzNm0JM' and '%' and tbl_4.col_17 <> 'Bob' order by r0,r1; id estRows task access object operator info Sort_11 0.00 root Column#11, Column#12 └─Projection_13 0.00 root weight_string(inlj_inner_multi_pattern.tbl_4.col_16)->Column#11, make_set(1, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#12 └─IndexJoin_19 0.00 root inner join, inner:Selection_18, outer key:Column#13, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(Column#13, inlj_inner_multi_pattern.tbl_4.col_16) ├─Projection_28(Build) 0.00 root cast(inlj_inner_multi_pattern.tbl_8.col_37, var_string(10))->Column#13 │ └─TableDual_29 0.00 root rows:0 └─Selection_18(Probe) 0.00 root ne(inlj_inner_multi_pattern.tbl_4.col_17, "Bob") └─IndexLookUp_17 0.00 root ├─IndexRangeScan_15(Build) 0.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#13)], keep order:false, stats:pseudo └─TableRowIDScan_16(Probe) 0.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ bit_length( tbl_4.col_16 ) as r0 , strcmp( tbl_4.col_16 , tbl_4.col_16 ) as r1 from tbl_4 join tbl_10 on tbl_4.col_17 = tbl_10.col_52 where tbl_4.col_16 in ( 'Rt!%(' ,'EmWPH5cZQK' ); id estRows task access object operator info Projection_9 20.00 root bit_length(inlj_inner_multi_pattern.tbl_4.col_16)->Column#6, strcmp(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#7 └─IndexJoin_15 20.00 root inner join, inner:Selection_14, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_17, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_17) ├─TableReader_26(Build) 10000.00 root data:TableFullScan_25 │ └─TableFullScan_25 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_14(Probe) 160000.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_13 20.00 root ├─IndexRangeScan_10(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52) in(inlj_inner_multi_pattern.tbl_4.col_16, Rt!%(, EmWPH5cZQK)], keep order:false, stats:pseudo └─Selection_12(Probe) 20.00 cop[tikv] in(inlj_inner_multi_pattern.tbl_4.col_16, "Rt!%(", "EmWPH5cZQK") └─TableRowIDScan_11 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ tbl_4.col_16 as r0 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_4.col_17 in ( 'David' ,'Bob' ,'Charlie' ,'Charlie' ) ) and not( tbl_10.col_52 between '' and 't文髻=CXo檽睙F=团4鴶)瘃观' ); id estRows task access object operator info IndexJoin_15 8320.83 root inner join, inner:Selection_14, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_27(Build) 6656.67 root data:Selection_26 │ └─Selection_26 6656.67 cop[tikv] or(lt(inlj_inner_multi_pattern.tbl_10.col_52, ""), gt(inlj_inner_multi_pattern.tbl_10.col_52, "t文髻=CXo檽睙F=团4鴶)瘃观")) │ └─TableFullScan_25 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_14(Probe) 53200080.00 root not(in(inlj_inner_multi_pattern.tbl_4.col_17, "David", "Bob", "Charlie", "Charlie")) └─IndexLookUp_13 8320.83 root ├─Selection_12(Build) 8320.83 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_10 8329.16 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_11(Probe) 8320.83 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_2 ) */ bit_or( tbl_2.col_7 ) as r0 , count( distinct tbl_9.col_49 ) as r1 , tbl_9.col_50 as r2 , ltrim( tbl_2.col_7 ) as r3 from tbl_9 right join tbl_2 on tbl_9.col_47 = tbl_2.col_7 where tbl_9.col_48 between 'David' and 'Bob' and not( tbl_9.col_48 between 'Bob' and 'Charlie' ); id estRows task access object operator info Projection_11 1.00 root Column#12, Column#13, inlj_inner_multi_pattern.tbl_9.col_50, ltrim(inlj_inner_multi_pattern.tbl_2.col_7)->Column#14 └─HashAgg_12 1.00 root funcs:bit_or(Column#32)->Column#12, funcs:count(distinct Column#33)->Column#13, funcs:firstrow(Column#34)->inlj_inner_multi_pattern.tbl_9.col_50, funcs:firstrow(Column#35)->inlj_inner_multi_pattern.tbl_2.col_7 └─Projection_47 10000.00 root cast(inlj_inner_multi_pattern.tbl_2.col_7, bigint(255) BINARY)->Column#32, inlj_inner_multi_pattern.tbl_9.col_49, inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_2.col_7 └─IndexJoin_19 10000.00 root inner join, inner:Selection_18, outer key:Column#16, inner key:inlj_inner_multi_pattern.tbl_9.col_47, equal cond:eq(Column#16, inlj_inner_multi_pattern.tbl_9.col_47) ├─Projection_29(Build) 10000.00 root inlj_inner_multi_pattern.tbl_2.col_7, cast(inlj_inner_multi_pattern.tbl_2.col_7, datetime(6) BINARY)->Column#16 │ └─TableReader_31 10000.00 root data:TableFullScan_30 │ └─TableFullScan_30 10000.00 cop[tikv] table:tbl_2 keep order:false, stats:pseudo └─Selection_18(Probe) 80000000.00 root ge(inlj_inner_multi_pattern.tbl_9.col_48, "David"), le(inlj_inner_multi_pattern.tbl_9.col_48, "Bob"), not(and(ge(inlj_inner_multi_pattern.tbl_9.col_48, "Bob"), le(inlj_inner_multi_pattern.tbl_9.col_48, "Charlie"))) └─IndexLookUp_17 10000.00 root ├─IndexRangeScan_15(Build) 10000.00 cop[tikv] table:tbl_9, index:PRIMARY(col_47, col_51, col_44) range: decided by [eq(inlj_inner_multi_pattern.tbl_9.col_47, Column#16)], keep order:false, stats:pseudo └─TableRowIDScan_16(Probe) 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_3 , tbl_4 ) */ max( distinct tbl_3.col_10 ) as r0 , approx_count_distinct( tbl_3.col_13 ) as r1 , tbl_4.col_16 as r2 , right( tbl_3.col_14 , 7 ) as r3 from tbl_3 join tbl_4 on tbl_3.col_8 = tbl_4.col_16 where not( IsNull( tbl_4.col_17 ) ) and tbl_4.col_17 > 'Charlie' group by tbl_3.col_10,tbl_3.col_13 order by r0,r1,r2,r3; id estRows task access object operator info Sort_11 8000.00 root Column#13, Column#14, inlj_inner_multi_pattern.tbl_4.col_16, Column#15 └─Projection_13 8000.00 root Column#13, Column#14, inlj_inner_multi_pattern.tbl_4.col_16, right(inlj_inner_multi_pattern.tbl_3.col_14, 7)->Column#15 └─HashAgg_14 8000.00 root group by:inlj_inner_multi_pattern.tbl_3.col_10, inlj_inner_multi_pattern.tbl_3.col_13, funcs:max(distinct inlj_inner_multi_pattern.tbl_3.col_10)->Column#13, funcs:approx_count_distinct(inlj_inner_multi_pattern.tbl_3.col_13)->Column#14, funcs:firstrow(inlj_inner_multi_pattern.tbl_3.col_14)->inlj_inner_multi_pattern.tbl_3.col_14, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_20 9990.00 root inner join, inner:Selection_19, outer key:inlj_inner_multi_pattern.tbl_3.col_8, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_3.col_8, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_31(Build) 10000.00 root data:TableFullScan_30 │ └─TableFullScan_30 10000.00 cop[tikv] table:tbl_3 keep order:false, stats:pseudo └─Selection_19(Probe) 79920000.00 root gt(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"), not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_18 9990.00 root ├─Selection_17(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_15 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_3.col_8)], keep order:false, stats:pseudo └─TableRowIDScan_16(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ tbl_4.col_17 as r0 , min( tbl_9.col_46 ) as r1 , repeat( tbl_4.col_16 , tbl_4.col_16 ) as r2 , tbl_9.col_44 as r3 from tbl_9 join tbl_4 on tbl_9.col_44 = tbl_4.col_16 where IsNull( tbl_9.col_48 ) order by r0,r1,r2,r3 limit 59; id estRows task access object operator info Projection_14 1.00 root inlj_inner_multi_pattern.tbl_4.col_17, Column#14, repeat(inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY))->Column#15, inlj_inner_multi_pattern.tbl_9.col_44 └─Projection_55 1.00 root Column#14, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─TopN_17 1.00 root inlj_inner_multi_pattern.tbl_4.col_17, Column#14, Column#28, inlj_inner_multi_pattern.tbl_9.col_44, offset:0, count:59 └─Projection_56 1.00 root Column#14, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, repeat(inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY))->Column#28 └─HashAgg_19 1.00 root funcs:min(inlj_inner_multi_pattern.tbl_9.col_46)->Column#14, funcs:firstrow(inlj_inner_multi_pattern.tbl_9.col_44)->inlj_inner_multi_pattern.tbl_9.col_44, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_17)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_21 10000.00 root inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─IndexJoin_26 10000.00 root inner join, inner:Selection_25, outer key:inlj_inner_multi_pattern.tbl_4.col_16, inner key:inlj_inner_multi_pattern.tbl_9.col_44, equal cond:eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_44) ├─TableReader_37(Build) 9990.00 root data:Selection_36 │ └─Selection_36 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─TableFullScan_35 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─Selection_25(Probe) 79920000.00 root isnull(inlj_inner_multi_pattern.tbl_9.col_48) └─IndexLookUp_24 10000.00 root ├─IndexRangeScan_22(Build) 10000.00 cop[tikv] table:tbl_9, index:idx_18(col_44, col_43) range: decided by [eq(inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_4.col_16)], keep order:false, stats:pseudo └─TableRowIDScan_23(Probe) 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ tbl_10.col_52 as r0 , tbl_4.col_17 as r1 from tbl_4 join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where not( tbl_4.col_17 between 'Bob' and 'David' ) ; id estRows task access object operator info Projection_10 9990.00 root inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_11 9990.00 root inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52 └─IndexJoin_17 9990.00 root inner join, inner:Selection_16, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_28(Build) 10000.00 root data:TableFullScan_27 │ └─TableFullScan_27 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_16(Probe) 79920000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"), le(inlj_inner_multi_pattern.tbl_4.col_17, "David"))) └─IndexLookUp_15 9990.00 root ├─Selection_14(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_12 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_13(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_1 ) */ tbl_1.col_3 as r0 , tbl_9.col_47 as r1 , substr( tbl_9.col_46 , 5 ) as r2 , rpad( tbl_9.col_44 , 7 , tbl_9.col_44 ) as r3 from tbl_9 right join tbl_1 on tbl_9.col_47 = tbl_1.col_6 where not( tbl_9.col_48 between 'Charlie' and 'Charlie' ) order by r0,r1,r2,r3 limit 47; id estRows task access object operator info Projection_12 47.00 root inlj_inner_multi_pattern.tbl_1.col_3, inlj_inner_multi_pattern.tbl_9.col_47, substr(inlj_inner_multi_pattern.tbl_9.col_46, 5)->Column#18, rpad(inlj_inner_multi_pattern.tbl_9.col_44, 7, inlj_inner_multi_pattern.tbl_9.col_44)->Column#19 └─Projection_35 47.00 root inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_47, inlj_inner_multi_pattern.tbl_1.col_3 └─TopN_15 47.00 root inlj_inner_multi_pattern.tbl_1.col_3, inlj_inner_multi_pattern.tbl_9.col_47, Column#25, Column#26, offset:0, count:47 └─Projection_36 10000.00 root inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_47, inlj_inner_multi_pattern.tbl_1.col_3, substr(inlj_inner_multi_pattern.tbl_9.col_46, 5)->Column#25, rpad(inlj_inner_multi_pattern.tbl_9.col_44, 7, inlj_inner_multi_pattern.tbl_9.col_44)->Column#26 └─Projection_17 10000.00 root inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_47, inlj_inner_multi_pattern.tbl_1.col_3 └─IndexJoin_22 10000.00 root inner join, inner:Selection_21, outer key:inlj_inner_multi_pattern.tbl_1.col_6, inner key:inlj_inner_multi_pattern.tbl_9.col_47, equal cond:eq(inlj_inner_multi_pattern.tbl_1.col_6, inlj_inner_multi_pattern.tbl_9.col_47) ├─TableReader_33(Build) 10000.00 root data:TableFullScan_32 │ └─TableFullScan_32 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_21(Probe) 80000000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_9.col_48, "Charlie"), le(inlj_inner_multi_pattern.tbl_9.col_48, "Charlie"))) └─IndexLookUp_20 10000.00 root ├─IndexRangeScan_18(Build) 10000.00 cop[tikv] table:tbl_9, index:PRIMARY(col_47, col_51, col_44) range: decided by [eq(inlj_inner_multi_pattern.tbl_9.col_47, inlj_inner_multi_pattern.tbl_1.col_6)], keep order:false, stats:pseudo └─TableRowIDScan_19(Probe) 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ bit_xor( tbl_9.col_45 ) as r0 from tbl_9 right join tbl_4 on tbl_9.col_50 = tbl_4.col_16 where tbl_4.col_17 > 'Alice' and not( tbl_9.col_48 <> 'Bob' ) group by tbl_9.col_45 order by r0 limit 91; id estRows task access object operator info TopN_17 91.00 root Column#14, offset:0, count:91 └─HashAgg_22 6400.00 root group by:Column#19, funcs:bit_xor(Column#18)->Column#14 └─Projection_42 9990.00 root cast(inlj_inner_multi_pattern.tbl_9.col_45, bigint(22) BINARY)->Column#18, inlj_inner_multi_pattern.tbl_9.col_45 └─IndexJoin_29 9990.00 root inner join, inner:Selection_28, outer key:inlj_inner_multi_pattern.tbl_9.col_50, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_4.col_16) ├─Selection_39(Build) 8000.00 root not(ne(inlj_inner_multi_pattern.tbl_9.col_48, "Bob")) │ └─TableReader_41 10000.00 root data:TableFullScan_40 │ └─TableFullScan_40 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_28(Probe) 63936000.00 root gt(inlj_inner_multi_pattern.tbl_4.col_17, "Alice") └─IndexLookUp_27 9990.00 root ├─Selection_26(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_24 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_50)], keep order:false, stats:pseudo └─TableRowIDScan_25(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ bit_xor( tbl_10.col_52 ) as r0 , var_samp( tbl_4.col_16 ) as r1 from tbl_4 join tbl_10 on tbl_10.col_52 = tbl_4.col_16 where IsNull( tbl_4.col_16 ) or not( IsNull( tbl_4.col_17 ) ) group by tbl_4.col_16,tbl_10.col_52 ; id estRows task access object operator info HashAgg_12 8000.00 root group by:Column#13, Column#14, funcs:bit_xor(Column#11)->Column#6, funcs:var_samp(Column#12)->Column#7 └─Projection_31 9990.00 root cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY)->Column#11, cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#12, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_13 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52 └─IndexJoin_19 9990.00 root inner join, inner:Selection_18, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_30(Build) 10000.00 root data:TableFullScan_29 │ └─TableFullScan_29 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_18(Probe) 79920000.00 root or(isnull(inlj_inner_multi_pattern.tbl_4.col_16), not(isnull(inlj_inner_multi_pattern.tbl_4.col_17))) └─IndexLookUp_17 9990.00 root ├─Selection_16(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_14 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_15(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_8 ) */ ord( tbl_8.col_42 ) as r0 , tbl_4.col_17 as r1 from tbl_8 left join tbl_4 on tbl_4.col_16 = tbl_8.col_37 where tbl_4.col_17 != 'Alice' and not( tbl_4.col_16 between 'Rt!%(' and 'V)RNMqDjZ7rbxX' ) ; id estRows task access object operator info Projection_10 5325.33 root ord(inlj_inner_multi_pattern.tbl_8.col_42)->Column#11, inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_11 5325.33 root inlj_inner_multi_pattern.tbl_8.col_42, inlj_inner_multi_pattern.tbl_4.col_17 └─IndexJoin_17 5325.33 root inner join, inner:Selection_16, outer key:Column#12, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(Column#12, inlj_inner_multi_pattern.tbl_4.col_16) ├─Projection_27(Build) 10000.00 root inlj_inner_multi_pattern.tbl_8.col_42, cast(inlj_inner_multi_pattern.tbl_8.col_37, var_string(10))->Column#12 │ └─TableReader_29 10000.00 root data:TableFullScan_28 │ └─TableFullScan_28 10000.00 cop[tikv] table:tbl_8 keep order:false, stats:pseudo └─Selection_16(Probe) 42602666.67 root ne(inlj_inner_multi_pattern.tbl_4.col_17, "Alice") └─IndexLookUp_15 5325.33 root ├─IndexRangeScan_12(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#12)], keep order:false, stats:pseudo └─Selection_14(Probe) 5325.33 cop[tikv] or(lt(inlj_inner_multi_pattern.tbl_4.col_16, "Rt!%("), gt(inlj_inner_multi_pattern.tbl_4.col_16, "V)RNMqDjZ7rbxX")) └─TableRowIDScan_13 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ tbl_10.col_52 as r0 , char( tbl_10.col_52 , tbl_10.col_52 using gbk ) as r1 , avg( distinct tbl_4.col_16 ) as r2 , min( tbl_10.col_52 ) as r3 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where tbl_4.col_17 in ( 'Bob' ,'David' ,'Charlie' ) ; id estRows task access object operator info Projection_10 1.00 root inlj_inner_multi_pattern.tbl_10.col_52, char_func(cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY), cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY), gbk)->Column#8, Column#6, Column#7 └─HashAgg_11 1.00 root funcs:avg(distinct Column#16)->Column#6, funcs:min(Column#17)->Column#7, funcs:firstrow(Column#18)->inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_45 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#16, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52 └─IndexJoin_18 9990.00 root inner join, inner:Selection_17, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_29(Build) 10000.00 root data:TableFullScan_28 │ └─TableFullScan_28 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_17(Probe) 79920000.00 root in(inlj_inner_multi_pattern.tbl_4.col_17, "Bob", "David", "Charlie") └─IndexLookUp_16 9990.00 root ├─Selection_15(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_13 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_14(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_3 ) */ sum( tbl_3.col_9 ) as r0 , weight_string( tbl_3.col_10 ) as r1 , avg( distinct tbl_3.col_8 ) as r2 , bit_or( tbl_4.col_16 ) as r3 , char( tbl_4.col_16 , tbl_4.col_17 using gbk ) as r4 from tbl_3 join tbl_4 on tbl_3.col_8 = tbl_4.col_16 where tbl_4.col_16 between 'Rt!%(' and 'EmWPH5cZQK' and tbl_4.col_17 between 'David' and 'Charlie' ; id estRows task access object operator info Projection_11 1.00 root Column#13, weight_string(inlj_inner_multi_pattern.tbl_3.col_10)->Column#16, Column#14, Column#15, char_func(cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY), cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), gbk)->Column#17 └─StreamAgg_13 1.00 root funcs:sum(Column#23)->Column#13, funcs:avg(distinct Column#24)->Column#14, funcs:bit_or(Column#25)->Column#15, funcs:firstrow(Column#26)->inlj_inner_multi_pattern.tbl_3.col_10, funcs:firstrow(Column#27)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(Column#28)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_34 0.00 root cast(inlj_inner_multi_pattern.tbl_3.col_9, double BINARY)->Column#23, cast(inlj_inner_multi_pattern.tbl_3.col_8, double BINARY)->Column#24, cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY)->Column#25, inlj_inner_multi_pattern.tbl_3.col_10, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_14 0.00 root inlj_inner_multi_pattern.tbl_3.col_8, inlj_inner_multi_pattern.tbl_3.col_9, inlj_inner_multi_pattern.tbl_3.col_10, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─IndexJoin_21 0.00 root inner join, inner:Selection_20, outer key:inlj_inner_multi_pattern.tbl_3.col_8, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_3.col_8, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_33(Build) 10000.00 root data:TableFullScan_32 │ └─TableFullScan_32 10000.00 cop[tikv] table:tbl_3 keep order:false, stats:pseudo └─Selection_20(Probe) 0.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie") └─IndexLookUp_19 0.00 root ├─Selection_17(Build) 0.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_15 0.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_3.col_8)], keep order:false, stats:pseudo └─Selection_18(Probe) 0.00 cop[tikv] ge(inlj_inner_multi_pattern.tbl_4.col_16, "Rt!%("), le(inlj_inner_multi_pattern.tbl_4.col_16, "EmWPH5cZQK") └─TableRowIDScan_16 0.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_5 ) */ max( tbl_4.col_16 ) as r0 , right( tbl_4.col_16 , 4 ) as r1 , bit_and( tbl_5.col_21 ) as r2 , tbl_5.col_21 as r3 from tbl_5 left join tbl_4 on tbl_4.col_16 = tbl_5.col_18 where not( IsNull( tbl_4.col_17 ) ) ; id estRows task access object operator info Projection_9 1.00 root Column#14, right(inlj_inner_multi_pattern.tbl_4.col_16, 4)->Column#16, Column#15, inlj_inner_multi_pattern.tbl_5.col_21 └─HashAgg_10 1.00 root funcs:max(inlj_inner_multi_pattern.tbl_4.col_16)->Column#14, funcs:bit_and(inlj_inner_multi_pattern.tbl_5.col_21)->Column#15, funcs:firstrow(inlj_inner_multi_pattern.tbl_5.col_21)->inlj_inner_multi_pattern.tbl_5.col_21, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_17 9990.00 root inner join, inner:Selection_16, outer key:inlj_inner_multi_pattern.tbl_5.col_18, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_5.col_18, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_29(Build) 9990.00 root data:Selection_28 │ └─Selection_28 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_5.col_18)) │ └─TableFullScan_27 10000.00 cop[tikv] table:tbl_5 keep order:false, stats:pseudo └─Selection_16(Probe) 79840080.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_15 9990.00 root ├─Selection_14(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_12 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_5.col_18)], keep order:false, stats:pseudo └─TableRowIDScan_13(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ bit_and( tbl_4.col_16 ) as r0 , tbl_4.col_17 as r1 from tbl_9 left join tbl_4 on tbl_4.col_16 = tbl_9.col_50 where tbl_4.col_17 between 'David' and 'Bob' group by tbl_4.col_16 order by r0,r1 limit 66; id estRows task access object operator info TopN_15 66.00 root Column#14, inlj_inner_multi_pattern.tbl_4.col_17, offset:0, count:66 └─HashAgg_20 6393.60 root group by:Column#23, funcs:bit_and(Column#21)->Column#14, funcs:firstrow(Column#22)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_55 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY)->Column#21, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_27 9990.00 root inner join, inner:Selection_26, outer key:inlj_inner_multi_pattern.tbl_9.col_50, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_38(Build) 10000.00 root data:TableFullScan_37 │ └─TableFullScan_37 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_26(Probe) 79920000.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob") └─IndexLookUp_25 9990.00 root ├─Selection_24(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_22 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_50)], keep order:false, stats:pseudo └─TableRowIDScan_23(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_5 ) */ tbl_5.col_23 as r0 , lcase( tbl_4.col_16 ) as r1 , bit_or( tbl_4.col_16 ) as r2 , tbl_5.col_25 as r3 from tbl_4 join tbl_5 on tbl_4.col_16 = tbl_5.col_18 where tbl_4.col_16 in ( select col_9 from tbl_3 where tbl_4.col_17 >= 'Charlie' ) and tbl_5.col_18 in ( select col_5 from tbl_1 where not( tbl_5.col_25 in ( '1988-10-26' ) ) ) group by tbl_4.col_16 ; id estRows task access object operator info Projection_20 4091.90 root inlj_inner_multi_pattern.tbl_5.col_23, lcase(inlj_inner_multi_pattern.tbl_4.col_16)->Column#31, Column#30, inlj_inner_multi_pattern.tbl_5.col_25 └─HashAgg_21 4091.90 root group by:Column#46, funcs:bit_or(Column#42)->Column#30, funcs:firstrow(Column#43)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(Column#44)->inlj_inner_multi_pattern.tbl_5.col_23, funcs:firstrow(Column#45)->inlj_inner_multi_pattern.tbl_5.col_25 └─Projection_55 5320.01 root cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY)->Column#42, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_5.col_23, inlj_inner_multi_pattern.tbl_5.col_25, inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_23 5320.01 root semi join, equal:[eq(inlj_inner_multi_pattern.tbl_5.col_18, inlj_inner_multi_pattern.tbl_1.col_5)] ├─IndexReader_54(Build) 10000.00 root index:IndexFullScan_53 │ └─IndexFullScan_53 10000.00 cop[tikv] table:tbl_1, index:PRIMARY(col_2, col_5) keep order:false, stats:pseudo └─HashJoin_24(Probe) 6650.01 root semi join, equal:[eq(Column#33, inlj_inner_multi_pattern.tbl_3.col_9)] ├─TableReader_50(Build) 10000.00 root data:TableFullScan_49 │ └─TableFullScan_49 10000.00 cop[tikv] table:tbl_3 keep order:false, stats:pseudo └─Projection_25(Probe) 8312.51 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_5.col_18, inlj_inner_multi_pattern.tbl_5.col_23, inlj_inner_multi_pattern.tbl_5.col_25, cast(inlj_inner_multi_pattern.tbl_4.col_16, datetime(6) BINARY)->Column#33 └─Projection_26 8312.51 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_5.col_18, inlj_inner_multi_pattern.tbl_5.col_23, inlj_inner_multi_pattern.tbl_5.col_25 └─IndexJoin_32 8312.51 root inner join, inner:Selection_31, outer key:inlj_inner_multi_pattern.tbl_5.col_18, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_5.col_18, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_44(Build) 6650.01 root data:Selection_43 │ └─Selection_43 6650.01 cop[tikv] ne(inlj_inner_multi_pattern.tbl_5.col_25, 1988-10-26 00:00:00.000000), not(isnull(inlj_inner_multi_pattern.tbl_5.col_18)) │ └─TableFullScan_42 10000.00 cop[tikv] table:tbl_5 keep order:false, stats:pseudo └─Selection_31(Probe) 53146879.92 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie") └─IndexLookUp_30 8312.51 root ├─Selection_29(Build) 8312.51 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_27 8320.83 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_5.col_18)], keep order:false, stats:pseudo └─TableRowIDScan_28(Probe) 8312.51 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ right( tbl_4.col_16 , 9 ) as r0 , repeat( tbl_9.col_50 , tbl_9.col_45 ) as r1 , unhex( tbl_4.col_16 ) as r2 , sum( tbl_4.col_17 ) as r3 from tbl_9 join tbl_4 on tbl_4.col_16 = tbl_9.col_46 where not( IsNull( tbl_9.col_45 ) ) and not( tbl_4.col_17 in ( 'David' ,'Bob' ,'Alice' ,'Alice' ) ) group by tbl_4.col_17 order by r0,r1,r2,r3; id estRows task access object operator info Sort_11 6393.60 root Column#15, Column#16, Column#17, Column#14 └─Projection_13 6393.60 root right(inlj_inner_multi_pattern.tbl_4.col_16, 9)->Column#15, repeat(inlj_inner_multi_pattern.tbl_9.col_50, cast(inlj_inner_multi_pattern.tbl_9.col_45, bigint(22) BINARY))->Column#16, unhex(inlj_inner_multi_pattern.tbl_4.col_16)->Column#17, Column#14 └─HashAgg_14 6393.60 root group by:Column#28, funcs:sum(Column#24)->Column#14, funcs:firstrow(Column#25)->inlj_inner_multi_pattern.tbl_9.col_45, funcs:firstrow(Column#26)->inlj_inner_multi_pattern.tbl_9.col_50, funcs:firstrow(Column#27)->inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_33 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#24, inlj_inner_multi_pattern.tbl_9.col_45, inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─IndexJoin_20 9990.00 root inner join, inner:Selection_19, outer key:inlj_inner_multi_pattern.tbl_9.col_46, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_32(Build) 9990.00 root data:Selection_31 │ └─Selection_31 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_9.col_45)) │ └─TableFullScan_30 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_19(Probe) 79840080.00 root not(in(inlj_inner_multi_pattern.tbl_4.col_17, "David", "Bob", "Alice", "Alice")) └─IndexLookUp_18 9990.00 root ├─Selection_17(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_15 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_46)], keep order:false, stats:pseudo └─TableRowIDScan_16(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_3 ) */ var_samp( tbl_4.col_17 ) as r0 , substring( tbl_4.col_16 , 9 ) as r1 , bin( tbl_4.col_17 ) as r2 , sum( distinct tbl_3.col_11 ) as r3 from tbl_4 right join tbl_3 on tbl_4.col_16 = tbl_3.col_8 where tbl_4.col_16 between 'EmWPH5cZQK' and 'Rt!%(' or not( tbl_4.col_17 between 'Charlie' and 'Bob' ) ; id estRows task access object operator info Projection_10 1.00 root Column#13, substring(inlj_inner_multi_pattern.tbl_4.col_16, 9)->Column#15, bin(cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY))->Column#16, Column#14 └─HashAgg_11 1.00 root funcs:var_samp(Column#25)->Column#13, funcs:sum(distinct Column#26)->Column#14, funcs:firstrow(Column#27)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(Column#28)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_47 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#25, cast(inlj_inner_multi_pattern.tbl_3.col_11, double BINARY)->Column#26, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_13 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_3.col_11 └─IndexJoin_19 9990.00 root inner join, inner:Selection_18, outer key:inlj_inner_multi_pattern.tbl_3.col_8, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_3.col_8, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_30(Build) 10000.00 root data:TableFullScan_29 │ └─TableFullScan_29 10000.00 cop[tikv] table:tbl_3 keep order:false, stats:pseudo └─Selection_18(Probe) 79920000.00 root or(and(ge(inlj_inner_multi_pattern.tbl_4.col_16, "EmWPH5cZQK"), le(inlj_inner_multi_pattern.tbl_4.col_16, "Rt!%(")), not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob")))) └─IndexLookUp_17 9990.00 root ├─Selection_16(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_14 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_3.col_8)], keep order:false, stats:pseudo └─TableRowIDScan_15(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ insert( tbl_10.col_52 , 1 , 2 , tbl_10.col_52 ) as r0 , stddev_pop( tbl_10.col_52 ) as r1 , reverse( tbl_10.col_52 ) as r2 , max( distinct tbl_4.col_16 ) as r3 from tbl_4 join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where tbl_4.col_17 between 'Charlie' and 'Bob' ; id estRows task access object operator info Projection_11 1.00 root insert_func(inlj_inner_multi_pattern.tbl_10.col_52, 1, 2, inlj_inner_multi_pattern.tbl_10.col_52)->Column#8, Column#6, reverse(inlj_inner_multi_pattern.tbl_10.col_52)->Column#9, Column#7 └─HashAgg_12 1.00 root funcs:stddev_pop(Column#18)->Column#6, funcs:max(distinct Column#19)->Column#7, funcs:firstrow(Column#20)->inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_48 9990.00 root cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#18, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_14 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52 └─IndexJoin_20 9990.00 root inner join, inner:Selection_19, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_31(Build) 10000.00 root data:TableFullScan_30 │ └─TableFullScan_30 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_19(Probe) 79920000.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob") └─IndexLookUp_18 9990.00 root ├─Selection_17(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_15 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_16(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_5 ) */ count( tbl_4.col_16 ) as r0 , bit_and( tbl_4.col_17 ) as r1 , sum( tbl_5.col_21 ) as r2 , avg( distinct tbl_5.col_21 ) as r3 , var_pop( tbl_4.col_17 ) as r4 from tbl_5 left join tbl_4 on tbl_4.col_16 = tbl_5.col_18 where not( IsNull( tbl_4.col_17 ) ) order by r0,r1,r2,r3,r4 limit 33; id estRows task access object operator info TopN_15 1.00 root Column#14, Column#15, Column#16, Column#17, Column#18, offset:0, count:33 └─HashAgg_20 1.00 root funcs:count(Column#25)->Column#14, funcs:bit_and(Column#26)->Column#15, funcs:sum(Column#27)->Column#16, funcs:avg(distinct Column#28)->Column#17, funcs:var_pop(Column#29)->Column#18 └─Projection_55 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY)->Column#26, cast(inlj_inner_multi_pattern.tbl_5.col_21, decimal(20,0) UNSIGNED BINARY)->Column#27, cast(inlj_inner_multi_pattern.tbl_5.col_21, decimal(20,0) UNSIGNED BINARY)->Column#28, cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#29 └─IndexJoin_27 9990.00 root inner join, inner:Selection_26, outer key:inlj_inner_multi_pattern.tbl_5.col_18, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_5.col_18, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_39(Build) 9990.00 root data:Selection_38 │ └─Selection_38 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_5.col_18)) │ └─TableFullScan_37 10000.00 cop[tikv] table:tbl_5 keep order:false, stats:pseudo └─Selection_26(Probe) 79840080.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_25 9990.00 root ├─Selection_24(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_22 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_5.col_18)], keep order:false, stats:pseudo └─TableRowIDScan_23(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_8 ) */ tbl_8.col_40 as r0 , unhex( tbl_9.col_50 ) as r1 , unhex( tbl_8.col_39 ) as r2 , var_samp( tbl_8.col_41 ) as r3 , insert( tbl_8.col_39 , 0 , 0 , tbl_8.col_42 ) as r4 from tbl_8 left join tbl_9 on tbl_8.col_42 = tbl_9.col_44 where tbl_9.col_48 between 'Bob' and 'Alice' and not( IsNull( tbl_8.col_38 ) ) group by tbl_8.col_41 order by r0,r1,r2,r3,r4 limit 37; id estRows task access object operator info Projection_12 37.00 root inlj_inner_multi_pattern.tbl_8.col_40, unhex(inlj_inner_multi_pattern.tbl_9.col_50)->Column#19, unhex(inlj_inner_multi_pattern.tbl_8.col_39)->Column#20, Column#18, insert_func(inlj_inner_multi_pattern.tbl_8.col_39, 0, 0, inlj_inner_multi_pattern.tbl_8.col_42)->Column#21 └─Projection_52 37.00 root Column#18, inlj_inner_multi_pattern.tbl_8.col_39, inlj_inner_multi_pattern.tbl_8.col_40, inlj_inner_multi_pattern.tbl_8.col_42, inlj_inner_multi_pattern.tbl_9.col_50 └─TopN_15 37.00 root inlj_inner_multi_pattern.tbl_8.col_40, Column#43, Column#44, Column#18, Column#45, offset:0, count:37 └─Projection_53 8000.00 root Column#18, inlj_inner_multi_pattern.tbl_8.col_39, inlj_inner_multi_pattern.tbl_8.col_40, inlj_inner_multi_pattern.tbl_8.col_42, inlj_inner_multi_pattern.tbl_9.col_50, unhex(inlj_inner_multi_pattern.tbl_9.col_50)->Column#43, unhex(inlj_inner_multi_pattern.tbl_8.col_39)->Column#44, insert_func(inlj_inner_multi_pattern.tbl_8.col_39, 0, 0, inlj_inner_multi_pattern.tbl_8.col_42)->Column#45 └─HashAgg_17 8000.00 root group by:Column#42, funcs:var_samp(Column#37)->Column#18, funcs:firstrow(Column#38)->inlj_inner_multi_pattern.tbl_8.col_39, funcs:firstrow(Column#39)->inlj_inner_multi_pattern.tbl_8.col_40, funcs:firstrow(Column#40)->inlj_inner_multi_pattern.tbl_8.col_42, funcs:firstrow(Column#41)->inlj_inner_multi_pattern.tbl_9.col_50 └─Projection_51 10000.00 root cast(inlj_inner_multi_pattern.tbl_8.col_41, double BINARY)->Column#37, inlj_inner_multi_pattern.tbl_8.col_39, inlj_inner_multi_pattern.tbl_8.col_40, inlj_inner_multi_pattern.tbl_8.col_42, inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_8.col_41 └─IndexJoin_23 10000.00 root inner join, inner:Selection_22, outer key:inlj_inner_multi_pattern.tbl_8.col_42, inner key:inlj_inner_multi_pattern.tbl_9.col_44, equal cond:eq(inlj_inner_multi_pattern.tbl_8.col_42, inlj_inner_multi_pattern.tbl_9.col_44) ├─TableReader_33(Build) 10000.00 root data:TableFullScan_32 │ └─TableFullScan_32 10000.00 cop[tikv] table:tbl_8 keep order:false, stats:pseudo └─Selection_22(Probe) 80000000.00 root ge(inlj_inner_multi_pattern.tbl_9.col_48, "Bob"), le(inlj_inner_multi_pattern.tbl_9.col_48, "Alice") └─IndexLookUp_21 10000.00 root ├─IndexRangeScan_19(Build) 10000.00 cop[tikv] table:tbl_9, index:idx_18(col_44, col_43) range: decided by [eq(inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_8.col_42)], keep order:false, stats:pseudo └─TableRowIDScan_20(Probe) 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ tbl_10.col_52 as r0 , char( tbl_4.col_16 , tbl_4.col_17 using gbk ) as r1 , tbl_4.col_16 as r2 from tbl_4 join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where not( tbl_4.col_16 <= 'T1b_19DKgtgk=' ) and not( IsNull( tbl_4.col_17 ) ) ; id estRows task access object operator info Projection_9 3333.33 root inlj_inner_multi_pattern.tbl_10.col_52, char_func(cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY), cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), gbk)->Column#6, inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_16 3333.33 root inner join, inner:Selection_15, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_28(Build) 10000.00 root data:TableFullScan_27 │ └─TableFullScan_27 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_15(Probe) 26666666.67 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_14 3333.33 root ├─Selection_12(Build) 10000.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_10 30000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─Selection_13(Probe) 3333.33 cop[tikv] gt(inlj_inner_multi_pattern.tbl_4.col_16, "T1b_19DKgtgk=") └─TableRowIDScan_11 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_5 , tbl_9 ) */ tbl_5.col_26 as r0 , octet_length( tbl_9.col_46 ) as r1 , stddev_samp( tbl_5.col_21 ) as r2 , stddev_samp( tbl_5.col_21 ) as r3 , substr( tbl_5.col_24 , 4 ) as r4 from tbl_5 left join tbl_9 on tbl_5.col_22 = tbl_9.col_44 where not( tbl_9.col_48 between 'Bob' and 'Bob' ) and tbl_5.col_22 <> 'Bob' group by tbl_5.col_21 ; id estRows task access object operator info Projection_9 32.00 root inlj_inner_multi_pattern.tbl_5.col_26, octet_length(to_binary(inlj_inner_multi_pattern.tbl_9.col_46))->Column#22, Column#21, Column#21, substr(cast(inlj_inner_multi_pattern.tbl_5.col_24, var_string(20)), 4)->Column#23 └─HashAgg_10 32.00 root group by:Column#35, funcs:stddev_samp(Column#31)->Column#21, funcs:firstrow(Column#32)->inlj_inner_multi_pattern.tbl_5.col_24, funcs:firstrow(Column#33)->inlj_inner_multi_pattern.tbl_5.col_26, funcs:firstrow(Column#34)->inlj_inner_multi_pattern.tbl_9.col_46 └─Projection_27 50.00 root cast(inlj_inner_multi_pattern.tbl_5.col_21, double UNSIGNED BINARY)->Column#31, inlj_inner_multi_pattern.tbl_5.col_24, inlj_inner_multi_pattern.tbl_5.col_26, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_5.col_21 └─IndexJoin_15 50.00 root inner join, inner:Selection_14, outer key:inlj_inner_multi_pattern.tbl_5.col_22, inner key:inlj_inner_multi_pattern.tbl_9.col_44, equal cond:eq(inlj_inner_multi_pattern.tbl_5.col_22, inlj_inner_multi_pattern.tbl_9.col_44) ├─TableReader_26(Build) 40.00 root data:Selection_25 │ └─Selection_25 40.00 cop[tikv] ne(inlj_inner_multi_pattern.tbl_5.col_22, "Bob") │ └─TableFullScan_24 10000.00 cop[tikv] table:tbl_5 keep order:false, stats:pseudo └─Selection_14(Probe) 320000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_9.col_48, "Bob"), le(inlj_inner_multi_pattern.tbl_9.col_48, "Bob"))) └─IndexLookUp_13 50.00 root ├─IndexRangeScan_11(Build) 50.00 cop[tikv] table:tbl_9, index:idx_18(col_44, col_43) range: decided by [eq(inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_5.col_22)], keep order:false, stats:pseudo └─TableRowIDScan_12(Probe) 50.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_1 ) */ tbl_4.col_17 as r0 , repeat( tbl_4.col_16 , tbl_4.col_16 ) as r1 , tbl_4.col_17 as r2 , repeat( tbl_4.col_16 , tbl_4.col_16 ) as r3 , approx_count_distinct( tbl_4.col_16 ) as r4 from tbl_4 join tbl_1 on tbl_1.col_4 = tbl_4.col_16 where not( tbl_4.col_17 between 'Bob' and 'David' ) group by tbl_4.col_16 order by r0,r1,r2,r3,r4; id estRows task access object operator info Sort_13 6400.00 root inlj_inner_multi_pattern.tbl_4.col_17, Column#12, Column#13, Column#11 └─Projection_15 6400.00 root inlj_inner_multi_pattern.tbl_4.col_17, repeat(inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY))->Column#12, inlj_inner_multi_pattern.tbl_4.col_17, repeat(inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY))->Column#13, Column#11 └─HashAgg_16 6400.00 root group by:inlj_inner_multi_pattern.tbl_4.col_16, funcs:approx_count_distinct(inlj_inner_multi_pattern.tbl_4.col_16)->Column#11, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_17)->inlj_inner_multi_pattern.tbl_4.col_17 └─IndexJoin_23 10000.00 root inner join, inner:Selection_22, outer key:Column#16, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(Column#16, inlj_inner_multi_pattern.tbl_4.col_16) ├─Projection_32(Build) 10000.00 root cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#16 │ └─TableReader_34 10000.00 root data:TableFullScan_33 │ └─TableFullScan_33 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_22(Probe) 80000000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"), le(inlj_inner_multi_pattern.tbl_4.col_17, "David"))) └─IndexLookUp_21 10000.00 root ├─IndexRangeScan_19(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#16)], keep order:false, stats:pseudo └─TableRowIDScan_20(Probe) 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ approx_percentile( tbl_10.col_52 , 17 ) as r0 , tbl_4.col_17 as r1 from tbl_4 right join tbl_10 on tbl_10.col_52 = tbl_4.col_16 where tbl_4.col_17 in ( 'Alice' ,'David' ) group by tbl_10.col_52 ; id estRows task access object operator info HashAgg_11 8000.00 root group by:inlj_inner_multi_pattern.tbl_10.col_52, funcs:approx_percentile(inlj_inner_multi_pattern.tbl_10.col_52, 17)->Column#6, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_17)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_12 9990.00 root inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52 └─IndexJoin_18 9990.00 root inner join, inner:Selection_17, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_29(Build) 10000.00 root data:TableFullScan_28 │ └─TableFullScan_28 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_17(Probe) 79920000.00 root in(inlj_inner_multi_pattern.tbl_4.col_17, "Alice", "David") └─IndexLookUp_16 9990.00 root ├─Selection_15(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_13 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_14(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_8 ) */ group_concat( tbl_4.col_16 order by tbl_4.col_16 ) as r0 from tbl_4 join tbl_8 on tbl_4.col_16 = tbl_8.col_37 where tbl_4.col_17 in ( 'David' ,'Charlie' ,'Alice' ) ; id estRows task access object operator info HashAgg_13 1.00 root funcs:group_concat(inlj_inner_multi_pattern.tbl_4.col_16 order by inlj_inner_multi_pattern.tbl_4.col_16 separator ",")->Column#11 └─IndexJoin_20 10000.00 root inner join, inner:Selection_19, outer key:Column#12, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(Column#12, inlj_inner_multi_pattern.tbl_4.col_16) ├─Projection_29(Build) 10000.00 root cast(inlj_inner_multi_pattern.tbl_8.col_37, var_string(10))->Column#12 │ └─TableReader_31 10000.00 root data:TableFullScan_30 │ └─TableFullScan_30 10000.00 cop[tikv] table:tbl_8 keep order:false, stats:pseudo └─Selection_19(Probe) 80000000.00 root in(inlj_inner_multi_pattern.tbl_4.col_17, "David", "Charlie", "Alice") └─IndexLookUp_18 10000.00 root ├─IndexRangeScan_16(Build) 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#12)], keep order:false, stats:pseudo └─TableRowIDScan_17(Probe) 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ substr( tbl_4.col_16 , 4 ) as r0 , character_length( tbl_4.col_16 ) as r1 , tbl_10.col_52 as r2 , substr( tbl_10.col_52 , 3 ) as r3 , var_samp( tbl_10.col_52 ) as r4 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_4.col_17 between 'Charlie' and 'Bob' ) and not( IsNull( tbl_10.col_52 ) ) order by r0,r1,r2,r3,r4 limit 46; id estRows task access object operator info Projection_13 1.00 root substr(inlj_inner_multi_pattern.tbl_4.col_16, 4)->Column#7, character_length(inlj_inner_multi_pattern.tbl_4.col_16)->Column#8, inlj_inner_multi_pattern.tbl_10.col_52, substr(inlj_inner_multi_pattern.tbl_10.col_52, 3)->Column#9, Column#6 └─Projection_53 1.00 root Column#6, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16 └─TopN_16 1.00 root Column#22, Column#23, inlj_inner_multi_pattern.tbl_10.col_52, Column#24, Column#6, offset:0, count:46 └─Projection_54 1.00 root Column#6, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16, substr(inlj_inner_multi_pattern.tbl_4.col_16, 4)->Column#22, character_length(inlj_inner_multi_pattern.tbl_4.col_16)->Column#23, substr(inlj_inner_multi_pattern.tbl_10.col_52, 3)->Column#24 └─HashAgg_18 1.00 root funcs:var_samp(Column#19)->Column#6, funcs:firstrow(Column#20)->inlj_inner_multi_pattern.tbl_10.col_52, funcs:firstrow(Column#21)->inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_52 9990.00 root cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#19, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16 └─IndexJoin_25 9990.00 root inner join, inner:Selection_24, outer key:inlj_inner_multi_pattern.tbl_10.col_52, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_36(Build) 10000.00 root data:TableFullScan_35 │ └─TableFullScan_35 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_24(Probe) 79920000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"))) └─IndexLookUp_23 9990.00 root ├─Selection_22(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_20 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)], keep order:false, stats:pseudo └─TableRowIDScan_21(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_1 ) */ tbl_1.col_1 as r0 , field( tbl_1.col_5 , tbl_1.col_5 , tbl_1.col_1 ) as r1 , insert( tbl_4.col_16 , 1 , 2 , tbl_4.col_16 ) as r2 from tbl_4 right join tbl_1 on tbl_4.col_16 = tbl_1.col_5 where not( tbl_4.col_17 > 'Bob' ) order by r0,r1,r2 limit 34; id estRows task access object operator info Projection_12 34.00 root inlj_inner_multi_pattern.tbl_1.col_1, field(to_binary(inlj_inner_multi_pattern.tbl_1.col_5), to_binary(inlj_inner_multi_pattern.tbl_1.col_5), inlj_inner_multi_pattern.tbl_1.col_1)->Column#11, insert_func(inlj_inner_multi_pattern.tbl_4.col_16, 1, 2, inlj_inner_multi_pattern.tbl_4.col_16)->Column#12 └─Projection_36 34.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_5 └─TopN_15 34.00 root inlj_inner_multi_pattern.tbl_1.col_1, Column#16, Column#17, offset:0, count:34 └─Projection_37 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_5, field(to_binary(inlj_inner_multi_pattern.tbl_1.col_5), to_binary(inlj_inner_multi_pattern.tbl_1.col_5), inlj_inner_multi_pattern.tbl_1.col_1)->Column#16, insert_func(inlj_inner_multi_pattern.tbl_4.col_16, 1, 2, inlj_inner_multi_pattern.tbl_4.col_16)->Column#17 └─Projection_17 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_5 └─IndexJoin_23 9990.00 root inner join, inner:Selection_22, outer key:inlj_inner_multi_pattern.tbl_1.col_5, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_1.col_5, inlj_inner_multi_pattern.tbl_4.col_16) ├─TableReader_34(Build) 10000.00 root data:TableFullScan_33 │ └─TableFullScan_33 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_22(Probe) 79920000.00 root not(gt(inlj_inner_multi_pattern.tbl_4.col_17, "Bob")) └─IndexLookUp_21 9990.00 root ├─Selection_20(Build) 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_18 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_1.col_5)], keep order:false, stats:pseudo └─TableRowIDScan_19(Probe) 9990.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_6 ) */ rtrim( tbl_9.col_44 ) as r0 , tbl_6.col_29 as r1 , count( tbl_6.col_29 ) as r2 , length( tbl_6.col_31 ) as r3 , tbl_6.col_34 as r4 from tbl_9 right join tbl_6 on tbl_9.col_47 = tbl_6.col_35 where tbl_9.col_48 between 'Charlie' and 'Alice' ; id estRows task access object operator info Projection_11 1.00 root rtrim(inlj_inner_multi_pattern.tbl_9.col_44)->Column#22, inlj_inner_multi_pattern.tbl_6.col_29, Column#21, length(inlj_inner_multi_pattern.tbl_6.col_31)->Column#23, inlj_inner_multi_pattern.tbl_6.col_34 └─HashAgg_12 1.00 root funcs:count(inlj_inner_multi_pattern.tbl_6.col_29)->Column#21, funcs:firstrow(inlj_inner_multi_pattern.tbl_9.col_44)->inlj_inner_multi_pattern.tbl_9.col_44, funcs:firstrow(inlj_inner_multi_pattern.tbl_6.col_29)->inlj_inner_multi_pattern.tbl_6.col_29, funcs:firstrow(inlj_inner_multi_pattern.tbl_6.col_31)->inlj_inner_multi_pattern.tbl_6.col_31, funcs:firstrow(inlj_inner_multi_pattern.tbl_6.col_34)->inlj_inner_multi_pattern.tbl_6.col_34 └─IndexJoin_19 10000.00 root inner join, inner:Selection_18, outer key:Column#26, inner key:inlj_inner_multi_pattern.tbl_9.col_47, equal cond:eq(Column#26, inlj_inner_multi_pattern.tbl_9.col_47) ├─Projection_29(Build) 10000.00 root inlj_inner_multi_pattern.tbl_6.col_29, inlj_inner_multi_pattern.tbl_6.col_31, inlj_inner_multi_pattern.tbl_6.col_34, cast(inlj_inner_multi_pattern.tbl_6.col_35, datetime(6) BINARY)->Column#26 │ └─TableReader_31 10000.00 root data:TableFullScan_30 │ └─TableFullScan_30 10000.00 cop[tikv] table:tbl_6 keep order:false, stats:pseudo └─Selection_18(Probe) 80000000.00 root ge(inlj_inner_multi_pattern.tbl_9.col_48, "Charlie"), le(inlj_inner_multi_pattern.tbl_9.col_48, "Alice") └─IndexLookUp_17 10000.00 root ├─IndexRangeScan_15(Build) 10000.00 cop[tikv] table:tbl_9, index:PRIMARY(col_47, col_51, col_44) range: decided by [eq(inlj_inner_multi_pattern.tbl_9.col_47, Column#26)], keep order:false, stats:pseudo └─TableRowIDScan_16(Probe) 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ make_set( 0 , tbl_9.col_46 , tbl_9.col_46 ) as r0 , var_samp( tbl_9.col_51 ) as r1 , bit_xor( tbl_4.col_16 ) as r2 from tbl_4 right join tbl_9 on tbl_9.col_48 = tbl_4.col_16 where tbl_9.col_50 in ( 'Yg)Fr(dZXB' ,'Yg)Fr(dZXB' ,'guc~Pu)YTt' ,'PQ' ) and tbl_4.col_17 between 'David' and 'Charlie' order by r0,r1,r2 limit 58; id estRows task access object operator info Projection_14 1.00 root make_set(0, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_46)->Column#16, Column#14, Column#15 └─Projection_58 1.00 root Column#14, Column#15, inlj_inner_multi_pattern.tbl_9.col_46 └─TopN_17 1.00 root Column#27, Column#14, Column#15, offset:0, count:58 └─Projection_59 1.00 root Column#14, Column#15, inlj_inner_multi_pattern.tbl_9.col_46, make_set(0, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_46)->Column#27 └─HashAgg_19 1.00 root funcs:var_samp(Column#24)->Column#14, funcs:bit_xor(Column#25)->Column#15, funcs:firstrow(Column#26)->inlj_inner_multi_pattern.tbl_9.col_46 └─Projection_57 30.00 root inlj_inner_multi_pattern.tbl_9.col_51, cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY)->Column#25, inlj_inner_multi_pattern.tbl_9.col_46 └─Projection_21 30.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_51 └─IndexJoin_27 30.00 root inner join, inner:Selection_26, outer key:inlj_inner_multi_pattern.tbl_9.col_48, inner key:inlj_inner_multi_pattern.tbl_4.col_16, equal cond:eq(inlj_inner_multi_pattern.tbl_9.col_48, inlj_inner_multi_pattern.tbl_4.col_16) ├─Selection_37(Build) 24.00 root not(isnull(inlj_inner_multi_pattern.tbl_9.col_48)) │ └─TableReader_40 30.00 root data:Selection_39 │ └─Selection_39 30.00 cop[tikv] in(inlj_inner_multi_pattern.tbl_9.col_50, "Yg)Fr(dZXB", "Yg)Fr(dZXB", "guc~Pu)YTt", "PQ") │ └─TableFullScan_38 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_26(Probe) 191808.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie") └─IndexLookUp_25 30.00 root ├─Selection_24(Build) 30.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─IndexRangeScan_22 30.03 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range: decided by [eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_48)], keep order:false, stats:pseudo └─TableRowIDScan_23(Probe) 30.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo set @@session.tidb_enable_inl_join_inner_multi_pattern='OFF'; explain select /*+ inl_join( tbl_4 , tbl_10 ) */ tbl_10.col_52 as r0 , character_length( tbl_10.col_52 ) as r1 , unhex( tbl_4.col_16 ) as r2 from tbl_4 right join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where not( tbl_10.col_52 between '' and 't文髻=CXo檽睙F=团4鴶)瘃观' ) and not( IsNull( tbl_4.col_17 ) ); id estRows task access object operator info Projection_9 8320.83 root inlj_inner_multi_pattern.tbl_10.col_52, character_length(inlj_inner_multi_pattern.tbl_10.col_52)->Column#6, unhex(inlj_inner_multi_pattern.tbl_4.col_16)->Column#7 └─Projection_10 8320.83 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52 └─HashJoin_12 8320.83 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_15(Build) 6656.67 root data:Selection_14 │ └─Selection_14 6656.67 cop[tikv] or(lt(inlj_inner_multi_pattern.tbl_10.col_52, ""), gt(inlj_inner_multi_pattern.tbl_10.col_52, "t文髻=CXo檽睙F=团4鴶)瘃观")) │ └─TableFullScan_13 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_16(Probe) 7992.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─TableReader_19 9990.00 root data:Selection_18 └─Selection_18 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_17 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_3 , tbl_9 ) */ format( tbl_3.col_10 , 0 ) as r0 , sum( distinct tbl_3.col_9 ) as r1 , tbl_9.col_43 as r2 , tbl_9.col_48 as r3 , tbl_9.col_44 as r4 from tbl_9 join tbl_3 on tbl_9.col_44 = tbl_3.col_10 where not( tbl_9.col_47 <= '1980-09-23' ) and not( tbl_9.col_48 between 'David' and 'Charlie' ) order by r0,r1,r2,r3,r4 limit 34; id estRows task access object operator info Projection_13 1.00 root format(cast(inlj_inner_multi_pattern.tbl_3.col_10, double BINARY), 0)->Column#21, Column#20, inlj_inner_multi_pattern.tbl_9.col_43, inlj_inner_multi_pattern.tbl_9.col_48, inlj_inner_multi_pattern.tbl_9.col_44 └─Projection_38 1.00 root Column#20, inlj_inner_multi_pattern.tbl_9.col_43, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_48, inlj_inner_multi_pattern.tbl_3.col_10 └─TopN_16 1.00 root Column#33, Column#20, inlj_inner_multi_pattern.tbl_9.col_43, inlj_inner_multi_pattern.tbl_9.col_48, inlj_inner_multi_pattern.tbl_9.col_44, offset:0, count:34 └─Projection_39 1.00 root Column#20, inlj_inner_multi_pattern.tbl_9.col_43, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_48, inlj_inner_multi_pattern.tbl_3.col_10, format(cast(inlj_inner_multi_pattern.tbl_3.col_10, double BINARY), 0)->Column#33 └─HashAgg_18 1.00 root funcs:sum(distinct Column#28)->Column#20, funcs:firstrow(Column#29)->inlj_inner_multi_pattern.tbl_9.col_43, funcs:firstrow(Column#30)->inlj_inner_multi_pattern.tbl_9.col_44, funcs:firstrow(Column#31)->inlj_inner_multi_pattern.tbl_9.col_48, funcs:firstrow(Column#32)->inlj_inner_multi_pattern.tbl_3.col_10 └─Projection_37 3333.33 root cast(inlj_inner_multi_pattern.tbl_3.col_9, double BINARY)->Column#28, inlj_inner_multi_pattern.tbl_9.col_43, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_48, inlj_inner_multi_pattern.tbl_3.col_10 └─HashJoin_21 3333.33 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_3.col_10)] ├─Selection_22(Build) 2666.67 root not(and(ge(inlj_inner_multi_pattern.tbl_9.col_48, "David"), le(inlj_inner_multi_pattern.tbl_9.col_48, "Charlie"))) │ └─TableReader_25 3333.33 root data:Selection_24 │ └─Selection_24 3333.33 cop[tikv] gt(inlj_inner_multi_pattern.tbl_9.col_47, 1980-09-23 00:00:00.000000) │ └─TableFullScan_23 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─TableReader_34(Probe) 9990.00 root data:Selection_33 └─Selection_33 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_3.col_10)) └─TableFullScan_32 10000.00 cop[tikv] table:tbl_3 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_7 ) */ locate( tbl_9.col_44 , tbl_9.col_50 ) as r0 from tbl_9 right join tbl_7 on tbl_9.col_51 = tbl_7.col_36 where not( tbl_9.col_48 in ( 'Bob' ,'Bob' ,'Bob' ) ) and tbl_9.col_47 <> '1980-09-23' order by r0 limit 38; id estRows task access object operator info Projection_13 38.00 root locate(inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_50)->Column#13 └─Projection_39 38.00 root inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_50 └─TopN_16 38.00 root Column#20, offset:0, count:38 └─Projection_40 6656.67 root inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_50, locate(inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_50)->Column#20 └─HashJoin_19 6656.67 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_51, Column#14)] ├─Projection_31(Build) 10000.00 root cast(inlj_inner_multi_pattern.tbl_7.col_36, double BINARY)->Column#14 │ └─IndexReader_35 10000.00 root index:IndexFullScan_34 │ └─IndexFullScan_34 10000.00 cop[tikv] table:tbl_7, index:idx_12(col_36) keep order:false, stats:pseudo └─Selection_21(Probe) 5325.33 root not(in(inlj_inner_multi_pattern.tbl_9.col_48, "Bob", "Bob", "Bob")) └─TableReader_24 6656.67 root data:Selection_23 └─Selection_23 6656.67 cop[tikv] ne(inlj_inner_multi_pattern.tbl_9.col_47, 1980-09-23 00:00:00.000000) └─TableFullScan_22 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ tbl_4.col_16 as r0 from tbl_4 right join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where not( tbl_4.col_17 between 'David' and 'Bob' ); id estRows task access object operator info HashJoin_12 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_14(Build) 10000.00 root data:TableFullScan_13 │ └─TableFullScan_13 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_15(Probe) 7992.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"))) └─TableReader_18 9990.00 root data:Selection_17 └─Selection_17 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_16 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ tbl_9.col_49 as r0 , ascii( tbl_4.col_16 ) as r1 , export_set( 1 , tbl_9.col_50 , tbl_9.col_44 , '-', 8) as r2 , approx_count_distinct( tbl_4.col_17 ) as r3 from tbl_4 right join tbl_9 on tbl_9.col_46 = tbl_4.col_17 where tbl_9.col_46 in ( select col_3 from tbl_1 where tbl_4.col_17 in ( select col_45 from tbl_9 where tbl_4.col_16 between 'Rt!%(' and 'B!k8k0pCBS9TGWB5wd2' ) and IsNull( tbl_9.col_51 ) ) and tbl_4.col_16 in ( 'Rt!%(' ) group by tbl_4.col_17 order by r0,r1,r2,r3 limit 65; id estRows task access object operator info Projection_22 5.12 root inlj_inner_multi_pattern.tbl_9.col_49, ascii(inlj_inner_multi_pattern.tbl_4.col_16)->Column#32, export_set(1, inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_9.col_44, -, 8)->Column#33, Column#31 └─Projection_44 5.12 root Column#31, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_49, inlj_inner_multi_pattern.tbl_9.col_50 └─TopN_25 5.12 root inlj_inner_multi_pattern.tbl_9.col_49, Column#39, Column#40, Column#31, offset:0, count:65 └─Projection_45 5.12 root Column#31, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_49, inlj_inner_multi_pattern.tbl_9.col_50, ascii(inlj_inner_multi_pattern.tbl_4.col_16)->Column#39, export_set(1, inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_9.col_44, -, 8)->Column#40 └─HashAgg_27 5.12 root group by:inlj_inner_multi_pattern.tbl_4.col_17, funcs:approx_count_distinct(inlj_inner_multi_pattern.tbl_4.col_17)->Column#31, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(inlj_inner_multi_pattern.tbl_9.col_44)->inlj_inner_multi_pattern.tbl_9.col_44, funcs:firstrow(inlj_inner_multi_pattern.tbl_9.col_49)->inlj_inner_multi_pattern.tbl_9.col_49, funcs:firstrow(inlj_inner_multi_pattern.tbl_9.col_50)->inlj_inner_multi_pattern.tbl_9.col_50 └─HashJoin_29 8.00 root semi join, equal:[eq(Column#36, inlj_inner_multi_pattern.tbl_1.col_3)] ├─TableDual_43(Build) 0.00 root rows:0 └─Projection_30(Probe) 10.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_49, inlj_inner_multi_pattern.tbl_9.col_50, cast(inlj_inner_multi_pattern.tbl_9.col_46, double BINARY)->Column#36 └─HashJoin_32 10.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_46)] ├─Selection_33(Build) 8.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) │ └─IndexLookUp_40 10.00 root │ ├─IndexRangeScan_37(Build) 10.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range:["Rt!%(","Rt!%("], keep order:false, stats:pseudo │ └─Selection_39(Probe) 10.00 cop[tikv] eq(inlj_inner_multi_pattern.tbl_4.col_16, "Rt!%(") │ └─TableRowIDScan_38 10.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─TableReader_42(Probe) 10000.00 root data:TableFullScan_41 └─TableFullScan_41 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_1 ) */ export_set( 7 , tbl_1.col_1 , tbl_1.col_5 , '-', 8) as r0 , bit_and( tbl_1.col_2 ) as r1 , to_base64( tbl_1.col_1 ) as r2 , tbl_4.col_16 as r3 , tbl_1.col_5 as r4 from tbl_4 right join tbl_1 on tbl_4.col_16 = tbl_1.col_4 where IsNull( tbl_4.col_17 ) and not( IsNull( tbl_4.col_16 ) ); id estRows task access object operator info Projection_11 1.00 root export_set(7, inlj_inner_multi_pattern.tbl_1.col_1, to_binary(inlj_inner_multi_pattern.tbl_1.col_5), -, 8)->Column#12, Column#11, to_base64(inlj_inner_multi_pattern.tbl_1.col_1)->Column#13, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_1.col_5 └─HashAgg_12 1.00 root funcs:bit_and(inlj_inner_multi_pattern.tbl_1.col_2)->Column#11, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(inlj_inner_multi_pattern.tbl_1.col_1)->inlj_inner_multi_pattern.tbl_1.col_1, funcs:firstrow(inlj_inner_multi_pattern.tbl_1.col_5)->inlj_inner_multi_pattern.tbl_1.col_5 └─HashJoin_15 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#16)] ├─Projection_24(Build) 10000.00 root inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_1.col_5, cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#16 │ └─TableReader_26 10000.00 root data:TableFullScan_25 │ └─TableFullScan_25 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_17(Probe) 7992.00 root isnull(inlj_inner_multi_pattern.tbl_4.col_17) └─TableReader_20 9990.00 root data:Selection_19 └─Selection_19 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_18 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_3 , tbl_4 ) */ stddev_pop( tbl_4.col_17 ) as r0 , bit_length( tbl_3.col_14 ) as r1 , substring( tbl_4.col_16 , 4 ) as r2 , sum( distinct tbl_4.col_16 ) as r3 from tbl_3 left join tbl_4 on tbl_4.col_16 = tbl_3.col_8 where tbl_4.col_17 between null and 'Bob' group by tbl_4.col_16,tbl_4.col_17 order by r0,r1,r2,r3; id estRows task access object operator info Sort_10 6393.60 root Column#13, Column#15, Column#16, Column#14 └─Projection_12 6393.60 root Column#13, bit_length(inlj_inner_multi_pattern.tbl_3.col_14)->Column#15, substring(inlj_inner_multi_pattern.tbl_4.col_16, 4)->Column#16, Column#14 └─HashAgg_13 6393.60 root group by:Column#24, Column#25, funcs:stddev_pop(Column#20)->Column#13, funcs:sum(distinct Column#21)->Column#14, funcs:firstrow(Column#22)->inlj_inner_multi_pattern.tbl_3.col_14, funcs:firstrow(Column#23)->inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_28 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#20, cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#21, inlj_inner_multi_pattern.tbl_3.col_14, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─HashJoin_15 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_3.col_8, inlj_inner_multi_pattern.tbl_4.col_16)] ├─Selection_19(Build) 7992.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, NULL), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob") │ └─TableReader_22 9990.00 root data:Selection_21 │ └─Selection_21 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─TableFullScan_20 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─TableReader_18(Probe) 10000.00 root data:TableFullScan_17 └─TableFullScan_17 10000.00 cop[tikv] table:tbl_3 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ char( tbl_9.col_45 , tbl_9.col_46 using gbk ) as r0 , tbl_9.col_46 as r1 from tbl_9 left join tbl_4 on tbl_9.col_46 = tbl_4.col_16 where tbl_4.col_17 != 'David' and not( tbl_4.col_16 <= 'B!k8k0pCBS9TGWB5wd2' ) order by r0,r1; id estRows task access object operator info Sort_10 3333.33 root Column#14, inlj_inner_multi_pattern.tbl_9.col_46 └─Projection_12 3333.33 root char_func(cast(inlj_inner_multi_pattern.tbl_9.col_45, bigint(22) BINARY), cast(inlj_inner_multi_pattern.tbl_9.col_46, bigint(43) BINARY), gbk)->Column#14, inlj_inner_multi_pattern.tbl_9.col_46 └─HashJoin_14 3333.33 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_46)] ├─IndexReader_27(Build) 10000.00 root index:IndexFullScan_26 │ └─IndexFullScan_26 10000.00 cop[tikv] table:tbl_9, index:idx_17(col_51, col_45, col_46) keep order:false, stats:pseudo └─Selection_16(Probe) 2666.67 root ne(inlj_inner_multi_pattern.tbl_4.col_17, "David") └─TableReader_19 3333.33 root data:Selection_18 └─Selection_18 3333.33 cop[tikv] gt(inlj_inner_multi_pattern.tbl_4.col_16, "B!k8k0pCBS9TGWB5wd2"), not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_17 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_5 , tbl_4 ) */ stddev_samp( tbl_4.col_17 ) as r0 , tbl_5.col_26 as r1 , strcmp( tbl_5.col_20 , tbl_5.col_19 ) as r2 from tbl_5 right join tbl_4 on tbl_5.col_18 = tbl_4.col_16 where not( tbl_4.col_17 in ( 'Charlie' ,'Bob' ,'Bob' ,'Charlie' ) ) and not( IsNull( tbl_5.col_18 ) ) group by tbl_4.col_17 order by r0,r1,r2; id estRows task access object operator info Sort_10 6393.60 root Column#14, inlj_inner_multi_pattern.tbl_5.col_26, Column#15 └─Projection_12 6393.60 root Column#14, inlj_inner_multi_pattern.tbl_5.col_26, strcmp(cast(inlj_inner_multi_pattern.tbl_5.col_20, var_string(5)), cast(inlj_inner_multi_pattern.tbl_5.col_19, var_string(62)))->Column#15 └─HashAgg_13 6393.60 root group by:Column#22, funcs:stddev_samp(Column#18)->Column#14, funcs:firstrow(Column#19)->inlj_inner_multi_pattern.tbl_5.col_19, funcs:firstrow(Column#20)->inlj_inner_multi_pattern.tbl_5.col_20, funcs:firstrow(Column#21)->inlj_inner_multi_pattern.tbl_5.col_26 └─Projection_26 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#18, inlj_inner_multi_pattern.tbl_5.col_19, inlj_inner_multi_pattern.tbl_5.col_20, inlj_inner_multi_pattern.tbl_5.col_26, inlj_inner_multi_pattern.tbl_4.col_17 └─HashJoin_15 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_5.col_18, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_18(Build) 9990.00 root data:Selection_17 │ └─Selection_17 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_5.col_18)) │ └─TableFullScan_16 10000.00 cop[tikv] table:tbl_5 keep order:false, stats:pseudo └─Selection_19(Probe) 7992.00 root not(in(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie", "Bob", "Bob", "Charlie")) └─TableReader_22 9990.00 root data:Selection_21 └─Selection_21 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_20 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ tbl_10.col_52 as r0 , var_samp( tbl_10.col_52 ) as r1 from tbl_10 left join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where tbl_4.col_17 != 'Charlie' or tbl_4.col_17 in ( 'David' ,'Charlie' ,'David' ) order by r0,r1; id estRows task access object operator info Sort_10 1.00 root inlj_inner_multi_pattern.tbl_10.col_52, Column#6 └─Projection_12 1.00 root inlj_inner_multi_pattern.tbl_10.col_52, Column#6 └─HashAgg_13 1.00 root funcs:var_samp(Column#8)->Column#6, funcs:firstrow(Column#9)->inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_29 9990.00 root cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#8, inlj_inner_multi_pattern.tbl_10.col_52 └─HashJoin_16 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_18(Build) 10000.00 root data:TableFullScan_17 │ └─TableFullScan_17 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_19(Probe) 7992.00 root or(ne(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"), in(inlj_inner_multi_pattern.tbl_4.col_17, "David", "Charlie", "David")) └─TableReader_22 9990.00 root data:Selection_21 └─Selection_21 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_20 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_9 ) */ repeat( tbl_4.col_16 , tbl_4.col_17 ) as r0 , instr( tbl_4.col_16 , tbl_4.col_16 ) as r1 , bin( tbl_4.col_17 ) as r2 , mid( tbl_9.col_50 , 1 , 9 ) as r3 from tbl_4 right join tbl_9 on tbl_9.col_46 = tbl_4.col_16 where not( tbl_9.col_47 between '1986-12-31' and '1980-09-23' ) and not( tbl_4.col_17 >= 'David' ) order by r0,r1,r2,r3 limit 32; id estRows task access object operator info Projection_12 32.00 root repeat(inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY))->Column#14, instr(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#15, bin(cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY))->Column#16, mid(inlj_inner_multi_pattern.tbl_9.col_50, 1, 9)->Column#17 └─Projection_37 32.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_50 └─TopN_15 32.00 root Column#24, Column#25, Column#26, Column#27, offset:0, count:32 └─Projection_38 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_50, repeat(inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY))->Column#24, instr(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#25, bin(cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY))->Column#26, mid(inlj_inner_multi_pattern.tbl_9.col_50, 1, 9)->Column#27 └─Projection_17 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_50 └─HashJoin_19 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_22(Build) 9990.00 root data:Selection_21 │ └─Selection_21 9990.00 cop[tikv] or(lt(inlj_inner_multi_pattern.tbl_9.col_47, 1986-12-31 00:00:00.000000), gt(inlj_inner_multi_pattern.tbl_9.col_47, 1980-09-23 00:00:00.000000)) │ └─TableFullScan_20 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_29(Probe) 7992.00 root not(ge(inlj_inner_multi_pattern.tbl_4.col_17, "David")) └─TableReader_32 9990.00 root data:Selection_31 └─Selection_31 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_30 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ tbl_10.col_52 as r0 , position( tbl_10.col_52 in tbl_10.col_52 ) as r1 , tbl_4.col_17 as r2 , tbl_4.col_16 as r3 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_4.col_17 between 'David' and 'David' ) and not( tbl_10.col_52 between 't文髻=CXo檽睙F=团4鴶)瘃观' and 't文髻=CXo檽睙F=团4鴶)瘃观' ); id estRows task access object operator info Projection_9 8320.83 root inlj_inner_multi_pattern.tbl_10.col_52, position(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52)->Column#6, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_11 8320.83 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_14(Build) 6656.67 root data:Selection_13 │ └─Selection_13 6656.67 cop[tikv] or(lt(inlj_inner_multi_pattern.tbl_10.col_52, "t文髻=CXo檽睙F=团4鴶)瘃观"), gt(inlj_inner_multi_pattern.tbl_10.col_52, "t文髻=CXo檽睙F=团4鴶)瘃观")) │ └─TableFullScan_12 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_15(Probe) 7992.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "David"))) └─TableReader_18 9990.00 root data:Selection_17 └─Selection_17 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_16 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ tbl_10.col_52 as r0 , count( tbl_4.col_16 ) as r1 , char_length( tbl_4.col_16 ) as r2 , max( tbl_4.col_17 ) as r3 , tbl_4.col_16 as r4 from tbl_10 right join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_10.col_52 < 'K齪裮~*奚UE貮#V' ) and not( tbl_4.col_17 between 'Charlie' and 'Bob' ); id estRows task access object operator info Projection_9 1.00 root inlj_inner_multi_pattern.tbl_10.col_52, Column#6, char_length(inlj_inner_multi_pattern.tbl_4.col_16)->Column#8, Column#7, inlj_inner_multi_pattern.tbl_4.col_16 └─HashAgg_10 1.00 root funcs:count(inlj_inner_multi_pattern.tbl_4.col_16)->Column#6, funcs:max(inlj_inner_multi_pattern.tbl_4.col_17)->Column#7, funcs:firstrow(inlj_inner_multi_pattern.tbl_10.col_52)->inlj_inner_multi_pattern.tbl_10.col_52, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_13 4166.67 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_16(Build) 3333.33 root data:Selection_15 │ └─Selection_15 3333.33 cop[tikv] ge(inlj_inner_multi_pattern.tbl_10.col_52, "K齪裮~*奚UE貮#V") │ └─TableFullScan_14 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_17(Probe) 7992.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"))) └─TableReader_20 9990.00 root data:Selection_19 └─Selection_19 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_18 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ min( distinct tbl_4.col_17 ) as r0 , elt(2, tbl_10.col_52 , tbl_10.col_52 ) as r1 from tbl_4 right join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where not( tbl_4.col_17 != 'Bob' ) and tbl_4.col_16 between 'EmWPH5cZQK' and null order by r0,r1 limit 32; id estRows task access object operator info Projection_12 1.00 root Column#6, elt(2, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52)->Column#7 └─Projection_25 1.00 root Column#6, inlj_inner_multi_pattern.tbl_10.col_52 └─TopN_15 1.00 root Column#6, Column#9, offset:0, count:32 └─Projection_26 1.00 root Column#6, inlj_inner_multi_pattern.tbl_10.col_52, elt(2, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52)->Column#9 └─StreamAgg_18 1.00 root funcs:min(distinct inlj_inner_multi_pattern.tbl_4.col_17)->Column#6, funcs:firstrow(inlj_inner_multi_pattern.tbl_10.col_52)->inlj_inner_multi_pattern.tbl_10.col_52 └─HashJoin_20 0.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)] ├─Selection_21(Build) 0.00 root not(ne(inlj_inner_multi_pattern.tbl_4.col_17, "Bob")) │ └─TableDual_22 0.00 root rows:0 └─TableReader_24(Probe) 10000.00 root data:TableFullScan_23 └─TableFullScan_23 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ tbl_10.col_52 as r0 , approx_count_distinct( tbl_4.col_17 ) as r1 , strcmp( tbl_4.col_16 , tbl_4.col_16 ) as r2 , tbl_4.col_17 as r3 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where tbl_4.col_17 in ( select col_49 from tbl_9 where tbl_4.col_17 < 'David' and not( tbl_4.col_17 < 'Charlie' ) ) order by r0,r1,r2,r3; id estRows task access object operator info Sort_16 1.00 root inlj_inner_multi_pattern.tbl_10.col_52, Column#16, Column#17, inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_18 1.00 root inlj_inner_multi_pattern.tbl_10.col_52, Column#16, strcmp(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#17, inlj_inner_multi_pattern.tbl_4.col_17 └─HashAgg_19 1.00 root funcs:approx_count_distinct(inlj_inner_multi_pattern.tbl_4.col_17)->Column#16, funcs:firstrow(inlj_inner_multi_pattern.tbl_10.col_52)->inlj_inner_multi_pattern.tbl_10.col_52, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_17)->inlj_inner_multi_pattern.tbl_4.col_17 └─HashJoin_21 7992.00 root semi join, equal:[eq(Column#19, inlj_inner_multi_pattern.tbl_9.col_49)] ├─TableReader_35(Build) 10000.00 root data:TableFullScan_34 │ └─TableFullScan_34 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Projection_22(Probe) 9990.00 root inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, cast(inlj_inner_multi_pattern.tbl_4.col_17, datetime(6) BINARY)->Column#19 └─HashJoin_24 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_26(Build) 10000.00 root data:TableFullScan_25 │ └─TableFullScan_25 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_27(Probe) 7992.00 root lt(inlj_inner_multi_pattern.tbl_4.col_17, "David"), not(lt(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie")) └─TableReader_30 9990.00 root data:Selection_29 └─Selection_29 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_28 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ right( tbl_10.col_52 , 0 ) as r0 , right( tbl_4.col_16 , 1 ) as r1 from tbl_10 join tbl_4 on tbl_4.col_16 = tbl_10.col_52 where not( IsNull( tbl_4.col_17 ) ); id estRows task access object operator info Projection_9 9990.00 root right(inlj_inner_multi_pattern.tbl_10.col_52, 0)->Column#6, right(inlj_inner_multi_pattern.tbl_4.col_16, 1)->Column#7 └─HashJoin_11 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_13(Build) 10000.00 root data:TableFullScan_12 │ └─TableFullScan_12 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_14(Probe) 7992.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─TableReader_17 9990.00 root data:Selection_16 └─Selection_16 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_15 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_9 ) */ min( tbl_9.col_45 ) as r0 , octet_length( tbl_10.col_52 ) as r1 from tbl_10 join tbl_9 on tbl_10.col_52 = tbl_9.col_51 where IsNull( tbl_9.col_48 ); id estRows task access object operator info Projection_12 1.00 root Column#13, octet_length(to_binary(inlj_inner_multi_pattern.tbl_10.col_52))->Column#14 └─HashAgg_13 1.00 root funcs:min(inlj_inner_multi_pattern.tbl_9.col_45)->Column#13, funcs:firstrow(inlj_inner_multi_pattern.tbl_10.col_52)->inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_15 10000.00 root inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_9.col_45 └─HashJoin_17 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_51, Column#16)] ├─Selection_18(Build) 8000.00 root isnull(inlj_inner_multi_pattern.tbl_9.col_48) │ └─TableReader_20 10000.00 root data:TableFullScan_19 │ └─TableFullScan_19 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Projection_21(Probe) 10000.00 root inlj_inner_multi_pattern.tbl_10.col_52, cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#16 └─TableReader_23 10000.00 root data:TableFullScan_22 └─TableFullScan_22 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ tbl_4.col_17 as r0 , mid( tbl_10.col_52 , 1 , 3 ) as r1 , tbl_10.col_52 as r2 , bin( tbl_4.col_16 ) as r3 , tbl_4.col_17 as r4 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_4.col_17 > 'Bob' ) order by r0,r1,r2,r3,r4 limit 85; id estRows task access object operator info Projection_12 85.00 root inlj_inner_multi_pattern.tbl_4.col_17, mid(inlj_inner_multi_pattern.tbl_10.col_52, 1, 3)->Column#6, inlj_inner_multi_pattern.tbl_10.col_52, bin(cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY))->Column#7, inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_28 85.00 root inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─TopN_15 85.00 root inlj_inner_multi_pattern.tbl_4.col_17, Column#9, inlj_inner_multi_pattern.tbl_10.col_52, Column#10, offset:0, count:85 └─Projection_29 9990.00 root inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, mid(inlj_inner_multi_pattern.tbl_10.col_52, 1, 3)->Column#9, bin(cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY))->Column#10 └─HashJoin_18 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_20(Build) 10000.00 root data:TableFullScan_19 │ └─TableFullScan_19 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_21(Probe) 7992.00 root not(gt(inlj_inner_multi_pattern.tbl_4.col_17, "Bob")) └─TableReader_24 9990.00 root data:Selection_23 └─Selection_23 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_22 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_8 , tbl_4 ) */ character_length( tbl_4.col_16 ) as r0 from tbl_8 left join tbl_4 on tbl_8.col_37 = tbl_4.col_16 where not( IsNull( tbl_4.col_17 ) ); id estRows task access object operator info Projection_10 10000.00 root character_length(inlj_inner_multi_pattern.tbl_4.col_16)->Column#11 └─HashJoin_12 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#12)] ├─Projection_17(Build) 10000.00 root cast(inlj_inner_multi_pattern.tbl_8.col_37, var_string(10))->Column#12 │ └─TableReader_19 10000.00 root data:TableFullScan_18 │ └─TableFullScan_18 10000.00 cop[tikv] table:tbl_8 keep order:false, stats:pseudo └─Selection_14(Probe) 8000.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─TableReader_16 10000.00 root data:TableFullScan_15 └─TableFullScan_15 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_8 , tbl_4 ) */ tbl_8.col_40 as r0 , tbl_4.col_17 as r1 , count( distinct tbl_8.col_41 ) as r2 , char( tbl_4.col_17 , tbl_4.col_17 using gbk ) as r3 from tbl_8 join tbl_4 on tbl_4.col_16 = tbl_8.col_37 where tbl_4.col_17 between 'David' and 'Alice' or not( tbl_4.col_16 <> 'EmWPH5cZQK' ); id estRows task access object operator info Projection_12 1.00 root inlj_inner_multi_pattern.tbl_8.col_40, inlj_inner_multi_pattern.tbl_4.col_17, Column#11, char_func(cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), gbk)->Column#12 └─HashAgg_13 1.00 root funcs:count(distinct inlj_inner_multi_pattern.tbl_8.col_41)->Column#11, funcs:firstrow(inlj_inner_multi_pattern.tbl_8.col_40)->inlj_inner_multi_pattern.tbl_8.col_40, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_17)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_15 10000.00 root inlj_inner_multi_pattern.tbl_8.col_40, inlj_inner_multi_pattern.tbl_8.col_41, inlj_inner_multi_pattern.tbl_4.col_17 └─HashJoin_17 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#14)] ├─Selection_18(Build) 8000.00 root or(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Alice")), not(ne(inlj_inner_multi_pattern.tbl_4.col_16, "EmWPH5cZQK"))) │ └─TableReader_20 10000.00 root data:TableFullScan_19 │ └─TableFullScan_19 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─Projection_21(Probe) 10000.00 root inlj_inner_multi_pattern.tbl_8.col_40, inlj_inner_multi_pattern.tbl_8.col_41, cast(inlj_inner_multi_pattern.tbl_8.col_37, var_string(10))->Column#14 └─TableReader_23 10000.00 root data:TableFullScan_22 └─TableFullScan_22 10000.00 cop[tikv] table:tbl_8 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_1 ) */ tbl_4.col_16 as r0 , tbl_4.col_17 as r1 from tbl_4 right join tbl_1 on tbl_4.col_16 = tbl_1.col_4 where not( tbl_4.col_17 > 'David' ) order by r0,r1; id estRows task access object operator info Sort_11 10000.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─HashJoin_15 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#11)] ├─Projection_20(Build) 10000.00 root cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#11 │ └─TableReader_22 10000.00 root data:TableFullScan_21 │ └─TableFullScan_21 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_17(Probe) 8000.00 root not(gt(inlj_inner_multi_pattern.tbl_4.col_17, "David")) └─TableReader_19 10000.00 root data:TableFullScan_18 └─TableFullScan_18 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_5 , tbl_4 ) */ sum( distinct tbl_4.col_16 ) as r0 from tbl_4 join tbl_5 on tbl_4.col_16 = tbl_5.col_22 where IsNull( tbl_5.col_22 ) or IsNull( tbl_4.col_17 ) group by tbl_4.col_16; id estRows task access object operator info HashAgg_12 6393.60 root group by:Column#17, funcs:sum(distinct Column#16)->Column#14 └─Projection_29 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#16, inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_16 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_5.col_22, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_18(Build) 10000.00 root data:TableFullScan_17 │ └─TableFullScan_17 10000.00 cop[tikv] table:tbl_5 keep order:false, stats:pseudo └─Selection_19(Probe) 7992.00 root or(0, isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─TableReader_22 9990.00 root data:Selection_21 └─Selection_21 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_20 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ lcase( tbl_4.col_16 ) as r0 , bit_length( tbl_4.col_16 ) as r1 , count( tbl_10.col_52 ) as r2 , tbl_4.col_16 as r3 from tbl_10 left join tbl_4 on tbl_4.col_16 = tbl_10.col_52 where not( tbl_4.col_17 > 'Charlie' ) and not( tbl_10.col_52 in ( '^M8VW@脛娳v6黋c巡&墐' ,'' ,'t文髻=CXo檽睙F=团4鴶)瘃观' ) ) group by tbl_10.col_52 order by r0,r1,r2,r3; id estRows task access object operator info Sort_10 3266.67 root Column#7, Column#8, Column#6, inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_12 3266.67 root lcase(inlj_inner_multi_pattern.tbl_4.col_16)->Column#7, bit_length(inlj_inner_multi_pattern.tbl_4.col_16)->Column#8, Column#6, inlj_inner_multi_pattern.tbl_4.col_16 └─HashAgg_13 3266.67 root group by:inlj_inner_multi_pattern.tbl_10.col_52, funcs:count(inlj_inner_multi_pattern.tbl_10.col_52)->Column#6, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_15 5104.17 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_18(Build) 4083.33 root data:Selection_17 │ └─Selection_17 4083.33 cop[tikv] not(in(inlj_inner_multi_pattern.tbl_10.col_52, "^M8VW@脛娳v6黋c巡&墐", "", "t文髻=CXo檽睙F=团4鴶)瘃观")) │ └─TableFullScan_16 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_19(Probe) 7992.00 root not(gt(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie")) └─TableReader_22 9990.00 root data:Selection_21 └─Selection_21 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_20 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ var_samp( tbl_9.col_46 ) as r0 , tbl_4.col_17 as r1 , insert( tbl_9.col_44 , 2 , 2 , tbl_9.col_44 ) as r2 from tbl_9 right join tbl_4 on tbl_9.col_44 = tbl_4.col_16 where tbl_9.col_48 in ( select col_17 from tbl_4 where tbl_4.col_16 between 'Rt!%(' and 'B!k8k0pCBS9TGWB5wd2' ) order by r0,r1,r2; id estRows task access object operator info Sort_17 1.00 root Column#17, inlj_inner_multi_pattern.tbl_4.col_17, Column#18 └─Projection_19 1.00 root Column#17, inlj_inner_multi_pattern.tbl_4.col_17, insert_func(inlj_inner_multi_pattern.tbl_9.col_44, 2, 2, inlj_inner_multi_pattern.tbl_9.col_44)->Column#18 └─StreamAgg_21 1.00 root funcs:var_samp(Column#21)->Column#17, funcs:firstrow(Column#22)->inlj_inner_multi_pattern.tbl_9.col_44, funcs:firstrow(Column#23)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_42 1.56 root cast(inlj_inner_multi_pattern.tbl_9.col_46, double BINARY)->Column#21, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_4.col_17 └─HashJoin_41 1.56 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_4.col_16)] ├─HashJoin_26(Build) 1.25 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_48)] │ ├─HashAgg_27(Build) 1.00 root group by:inlj_inner_multi_pattern.tbl_4.col_17, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_17)->inlj_inner_multi_pattern.tbl_4.col_17 │ │ └─Selection_28 0.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) │ │ └─TableDual_29 0.00 root rows:0 │ └─Selection_30(Probe) 8000.00 root not(isnull(inlj_inner_multi_pattern.tbl_9.col_48)) │ └─TableReader_32 10000.00 root data:TableFullScan_31 │ └─TableFullScan_31 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─TableReader_35(Probe) 9990.00 root data:Selection_34 └─Selection_34 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_33 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_1 , tbl_4 ) */ tbl_1.col_1 as r0 from tbl_1 join tbl_4 on tbl_1.col_4 = tbl_4.col_16 where not( tbl_1.col_3 between 4734.163053758499 and 9132.911812156843 ) and tbl_4.col_17 <= 'Charlie' order by r0; id estRows task access object operator info Sort_12 8320.83 root inlj_inner_multi_pattern.tbl_1.col_1 └─HashJoin_17 8320.83 root inner join, equal:[eq(Column#11, inlj_inner_multi_pattern.tbl_4.col_16)] ├─Projection_18(Build) 6656.67 root inlj_inner_multi_pattern.tbl_1.col_1, cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#11 │ └─TableReader_21 6656.67 root data:Selection_20 │ └─Selection_20 6656.67 cop[tikv] or(lt(inlj_inner_multi_pattern.tbl_1.col_3, 4734.163053758499), gt(inlj_inner_multi_pattern.tbl_1.col_3, 9132.911812156843)) │ └─TableFullScan_19 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_22(Probe) 8000.00 root le(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie") └─TableReader_24 10000.00 root data:TableFullScan_23 └─TableFullScan_23 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_8 , tbl_4 ) */ insert( tbl_4.col_16 , 0 , 1 , tbl_4.col_16 ) as r0 , ord( tbl_4.col_16 ) as r1 , tbl_4.col_17 as r2 from tbl_8 join tbl_4 on tbl_8.col_37 = tbl_4.col_16 where not( tbl_4.col_17 != 'Charlie' ) and tbl_4.col_17 between 'David' and 'Bob'; id estRows task access object operator info Projection_11 10000.00 root insert_func(inlj_inner_multi_pattern.tbl_4.col_16, 0, 1, inlj_inner_multi_pattern.tbl_4.col_16)->Column#11, ord(inlj_inner_multi_pattern.tbl_4.col_16)->Column#12, inlj_inner_multi_pattern.tbl_4.col_17 └─HashJoin_13 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#13)] ├─Projection_18(Build) 10000.00 root cast(inlj_inner_multi_pattern.tbl_8.col_37, var_string(10))->Column#13 │ └─TableReader_20 10000.00 root data:TableFullScan_19 │ └─TableFullScan_19 10000.00 cop[tikv] table:tbl_8 keep order:false, stats:pseudo └─Selection_15(Probe) 8000.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"), not(ne(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie")) └─TableReader_17 10000.00 root data:TableFullScan_16 └─TableFullScan_16 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ tbl_10.col_52 as r0 , ord( tbl_4.col_16 ) as r1 from tbl_4 right join tbl_10 on tbl_4.col_17 = tbl_10.col_52 where not( tbl_10.col_52 != 'Jsc洉tgS葹6RX' ) and tbl_4.col_16 in ( 'EmWPH5cZQK' ,'Rt!%(' ) order by r0,r1; id estRows task access object operator info Sort_10 12.50 root inlj_inner_multi_pattern.tbl_10.col_52, Column#6 └─Projection_12 12.50 root inlj_inner_multi_pattern.tbl_10.col_52, ord(inlj_inner_multi_pattern.tbl_4.col_16)->Column#6 └─Projection_13 12.50 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52 └─HashJoin_15 12.50 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_17)] ├─TableReader_18(Build) 10.00 root data:Selection_17 │ └─Selection_17 10.00 cop[tikv] eq(inlj_inner_multi_pattern.tbl_10.col_52, "Jsc洉tgS葹6RX") │ └─TableFullScan_16 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_19(Probe) 16.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─IndexLookUp_26 20.00 root ├─IndexRangeScan_23(Build) 20.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range:["EmWPH","EmWPH"], ["Rt!%(","Rt!%("], keep order:false, stats:pseudo └─Selection_25(Probe) 20.00 cop[tikv] in(inlj_inner_multi_pattern.tbl_4.col_16, "EmWPH5cZQK", "Rt!%(") └─TableRowIDScan_24 20.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ find_in_set( tbl_4.col_16 , tbl_4.col_16 ) as r0 from tbl_9 join tbl_4 on tbl_9.col_48 = tbl_4.col_16 where not( IsNull( tbl_4.col_17 ) ) and IsNull( tbl_4.col_17 ) order by r0 limit 85; id estRows task access object operator info Projection_14 85.00 root find_in_set(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#14 └─Projection_33 85.00 root inlj_inner_multi_pattern.tbl_4.col_16 └─TopN_17 85.00 root Column#16, offset:0, count:85 └─Projection_34 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, find_in_set(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#16 └─HashJoin_20 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_48)] ├─Selection_29(Build) 8000.00 root not(isnull(inlj_inner_multi_pattern.tbl_9.col_48)) │ └─TableReader_31 10000.00 root data:TableFullScan_30 │ └─TableFullScan_30 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_22(Probe) 7992.00 root isnull(inlj_inner_multi_pattern.tbl_4.col_17), not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─TableReader_25 9990.00 root data:Selection_24 └─Selection_24 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_23 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_9 ) */ tbl_4.col_16 as r0 , group_concat( distinct tbl_9.col_48 order by tbl_9.col_48 ) as r1 , make_set( 1 , tbl_9.col_46 , tbl_9.col_44 ) as r2 from tbl_4 join tbl_9 on tbl_4.col_17 = tbl_9.col_46 where not( tbl_4.col_16 <> 'YsxGq(s!@J$kCF&S' ) and not( tbl_9.col_50 in ( 'Yg)Fr(dZXB' ) ); id estRows task access object operator info Projection_10 1.00 root inlj_inner_multi_pattern.tbl_4.col_16, Column#14, make_set(1, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_44)->Column#15 └─StreamAgg_12 1.00 root funcs:group_concat(distinct inlj_inner_multi_pattern.tbl_9.col_48 order by inlj_inner_multi_pattern.tbl_9.col_48 separator ",")->Column#14, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(inlj_inner_multi_pattern.tbl_9.col_44)->inlj_inner_multi_pattern.tbl_9.col_44, funcs:firstrow(inlj_inner_multi_pattern.tbl_9.col_46)->inlj_inner_multi_pattern.tbl_9.col_46 └─HashJoin_27 10.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_46)] ├─Selection_15(Build) 8.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) │ └─IndexLookUp_22 10.00 root │ ├─IndexRangeScan_19(Build) 10.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range:["YsxGq","YsxGq"], keep order:false, stats:pseudo │ └─Selection_21(Probe) 10.00 cop[tikv] eq(inlj_inner_multi_pattern.tbl_4.col_16, "YsxGq(s!@J$kCF&S") │ └─TableRowIDScan_20 10.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─TableReader_25(Probe) 6656.67 root data:Selection_24 └─Selection_24 6656.67 cop[tikv] ne(inlj_inner_multi_pattern.tbl_9.col_50, "Yg)Fr(dZXB") └─TableFullScan_23 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_1 ) */ tbl_1.col_4 as r0 , tbl_1.col_6 as r1 , field( tbl_4.col_16 , tbl_4.col_16 , tbl_4.col_16 ) as r2 from tbl_4 right join tbl_1 on tbl_4.col_16 = tbl_1.col_4 where tbl_1.col_4 in ( select col_7 from tbl_2 where not( tbl_4.col_17 >= 'David' ) ); id estRows task access object operator info Projection_15 8000.00 root inlj_inner_multi_pattern.tbl_1.col_4, inlj_inner_multi_pattern.tbl_1.col_6, field(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#12 └─HashJoin_24 8000.00 root semi join, equal:[eq(Column#16, inlj_inner_multi_pattern.tbl_2.col_7)] ├─TableReader_36(Build) 10000.00 root data:TableFullScan_35 │ └─TableFullScan_35 10000.00 cop[tikv] table:tbl_2 keep order:false, stats:pseudo └─Projection_25(Probe) 10000.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_1.col_4, inlj_inner_multi_pattern.tbl_1.col_6, cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#16 └─HashJoin_27 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#14)] ├─Projection_32(Build) 10000.00 root inlj_inner_multi_pattern.tbl_1.col_4, inlj_inner_multi_pattern.tbl_1.col_6, cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#14 │ └─TableReader_34 10000.00 root data:TableFullScan_33 │ └─TableFullScan_33 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_29(Probe) 8000.00 root not(ge(inlj_inner_multi_pattern.tbl_4.col_17, "David")) └─TableReader_31 10000.00 root data:TableFullScan_30 └─TableFullScan_30 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ var_samp( tbl_4.col_17 ) as r0 , tbl_4.col_17 as r1 , tbl_10.col_52 as r2 , bit_xor( tbl_4.col_17 ) as r3 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_4.col_17 between 'David' and 'Charlie' ) order by r0,r1,r2,r3; id estRows task access object operator info Sort_11 1.00 root Column#6, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52, Column#7 └─Projection_13 1.00 root Column#6, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52, Column#7 └─HashAgg_14 1.00 root funcs:var_samp(Column#9)->Column#6, funcs:bit_xor(Column#10)->Column#7, funcs:firstrow(Column#11)->inlj_inner_multi_pattern.tbl_10.col_52, funcs:firstrow(Column#12)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_30 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#9, cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY)->Column#10, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_17 └─HashJoin_17 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_19(Build) 10000.00 root data:TableFullScan_18 │ └─TableFullScan_18 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_20(Probe) 7992.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"))) └─TableReader_23 9990.00 root data:Selection_22 └─Selection_22 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_21 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ approx_count_distinct( tbl_9.col_46 ) as r0 , strcmp( tbl_4.col_16 , tbl_4.col_16 ) as r1 from tbl_9 right join tbl_4 on tbl_9.col_47 = tbl_4.col_17 where not( IsNull( tbl_9.col_48 ) ) order by r0,r1 limit 73; id estRows task access object operator info Projection_14 1.00 root Column#14, strcmp(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#15 └─Projection_33 1.00 root Column#14, inlj_inner_multi_pattern.tbl_4.col_16 └─TopN_17 1.00 root Column#14, Column#19, offset:0, count:73 └─Projection_34 1.00 root Column#14, inlj_inner_multi_pattern.tbl_4.col_16, strcmp(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#19 └─HashAgg_19 1.00 root funcs:approx_count_distinct(inlj_inner_multi_pattern.tbl_9.col_46)->Column#14, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_23 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_47, Column#17)] ├─Selection_24(Build) 8000.00 root not(isnull(inlj_inner_multi_pattern.tbl_9.col_48)) │ └─TableReader_26 10000.00 root data:TableFullScan_25 │ └─TableFullScan_25 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Projection_27(Probe) 10000.00 root inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_17, datetime(6) BINARY)->Column#17 └─TableReader_29 10000.00 root data:TableFullScan_28 └─TableFullScan_28 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_1 , tbl_4 ) */ group_concat( distinct tbl_1.col_2 order by tbl_1.col_2 ) as r0 , tbl_1.col_4 as r1 , var_pop( tbl_4.col_16 ) as r2 , concat( tbl_4.col_16 , tbl_4.col_16 ) as r3 , tbl_1.col_6 as r4 from tbl_4 right join tbl_1 on tbl_4.col_16 = tbl_1.col_4 where not( tbl_4.col_17 = 'Bob' ); id estRows task access object operator info Projection_11 1.00 root Column#11, inlj_inner_multi_pattern.tbl_1.col_4, Column#12, concat(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#13, inlj_inner_multi_pattern.tbl_1.col_6 └─HashAgg_12 1.00 root funcs:group_concat(distinct Column#17 order by Column#18 separator ",")->Column#11, funcs:var_pop(Column#19)->Column#12, funcs:firstrow(Column#20)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(Column#21)->inlj_inner_multi_pattern.tbl_1.col_4, funcs:firstrow(Column#22)->inlj_inner_multi_pattern.tbl_1.col_6 └─Projection_26 10000.00 root cast(inlj_inner_multi_pattern.tbl_1.col_2, var_string(20))->Column#17, inlj_inner_multi_pattern.tbl_1.col_2, cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#19, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_1.col_4, inlj_inner_multi_pattern.tbl_1.col_6 └─HashJoin_15 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#15)] ├─Projection_20(Build) 10000.00 root inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_1.col_4, inlj_inner_multi_pattern.tbl_1.col_6, cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#15 │ └─TableReader_22 10000.00 root data:TableFullScan_21 │ └─TableFullScan_21 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_17(Probe) 8000.00 root not(eq(inlj_inner_multi_pattern.tbl_4.col_17, "Bob")) └─TableReader_19 10000.00 root data:TableFullScan_18 └─TableFullScan_18 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_1 , tbl_4 ) */ stddev_samp( tbl_4.col_17 ) as r0 , tbl_4.col_17 as r1 , var_samp( tbl_4.col_16 ) as r2 from tbl_1 left join tbl_4 on tbl_1.col_4 = tbl_4.col_16 where not( IsNull( tbl_1.col_1 ) ) and not( tbl_4.col_17 between 'Charlie' and 'Bob' ) order by r0,r1,r2 limit 65; id estRows task access object operator info Projection_14 1.00 root Column#11, inlj_inner_multi_pattern.tbl_4.col_17, Column#12 └─TopN_17 1.00 root Column#11, inlj_inner_multi_pattern.tbl_4.col_17, Column#12, offset:0, count:65 └─HashAgg_22 1.00 root funcs:stddev_samp(Column#15)->Column#11, funcs:var_samp(Column#16)->Column#12, funcs:firstrow(Column#17)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_37 10000.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#15, cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#16, inlj_inner_multi_pattern.tbl_4.col_17 └─HashJoin_25 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#13)] ├─Projection_30(Build) 9990.00 root cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#13 │ └─TableReader_33 9990.00 root data:Selection_32 │ └─Selection_32 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_1.col_1)) │ └─TableFullScan_31 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_27(Probe) 8000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"))) └─TableReader_29 10000.00 root data:TableFullScan_28 └─TableFullScan_28 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_6 ) */ position( tbl_4.col_16 in tbl_4.col_16 ) as r0 from tbl_4 join tbl_6 on tbl_4.col_17 = tbl_6.col_31 where tbl_4.col_16 in ( 'EmWPH5cZQK' ,'Rt!%(' ,'Rt!%(' ,'JJ_' ,'Rt!%(' ); id estRows task access object operator info Projection_9 30.00 root position(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#14 └─HashJoin_11 30.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_6.col_31)] ├─Selection_12(Build) 24.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) │ └─IndexLookUp_19 30.00 root │ ├─IndexRangeScan_16(Build) 30.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range:["EmWPH","EmWPH"], ["JJ_","JJ_"], ["Rt!%(","Rt!%("], keep order:false, stats:pseudo │ └─Selection_18(Probe) 30.00 cop[tikv] in(inlj_inner_multi_pattern.tbl_4.col_16, "EmWPH5cZQK", "Rt!%(", "Rt!%(", "JJ_", "Rt!%(") │ └─TableRowIDScan_17 30.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─IndexReader_23(Probe) 10000.00 root index:IndexFullScan_22 └─IndexFullScan_22 10000.00 cop[tikv] table:tbl_6, index:idx_10(col_27, col_31, col_34) keep order:false, stats:pseudo explain select /*+ inl_join( tbl_1 , tbl_9 ) */ substring_index( tbl_9.col_44 , ',' , 4 ) as r0 , to_base64( tbl_9.col_44 ) as r1 , lpad( tbl_9.col_50 , 5 , tbl_9.col_50 ) as r2 , from_base64( tbl_9.col_44 ) as r3 from tbl_1 right join tbl_9 on tbl_9.col_47 = tbl_1.col_6 where tbl_9.col_43 in ( select col_17 from tbl_4 where tbl_1.col_2 between 2124626257834469854 and 1529454899577851826 ) and IsNull( tbl_9.col_48 ) order by r0,r1,r2,r3; id estRows task access object operator info Sort_14 0.00 root Column#21, Column#22, Column#23, Column#24 └─Projection_16 0.00 root substring_index(inlj_inner_multi_pattern.tbl_9.col_44, ,, 4)->Column#21, to_base64(inlj_inner_multi_pattern.tbl_9.col_44)->Column#22, lpad(inlj_inner_multi_pattern.tbl_9.col_50, 5, inlj_inner_multi_pattern.tbl_9.col_50)->Column#23, from_base64(inlj_inner_multi_pattern.tbl_9.col_44)->Column#24 └─HashJoin_17 0.00 root semi join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_43, Column#29)] ├─Projection_24(Build) 10000.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#29 │ └─IndexReader_28 10000.00 root index:IndexFullScan_27 │ └─IndexFullScan_27 10000.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) keep order:false, stats:pseudo └─HashJoin_19(Probe) 0.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_1.col_6, inlj_inner_multi_pattern.tbl_9.col_47)] ├─TableDual_20(Build) 0.00 root rows:0 └─Selection_21(Probe) 8000.00 root isnull(inlj_inner_multi_pattern.tbl_9.col_48) └─TableReader_23 10000.00 root data:TableFullScan_22 └─TableFullScan_22 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_3 , tbl_4 ) */ character_length( tbl_4.col_16 ) as r0 , approx_percentile( tbl_4.col_16 , 22 ) as r1 , tbl_3.col_11 as r2 from tbl_3 join tbl_4 on tbl_3.col_8 = tbl_4.col_16 where not( tbl_4.col_17 between 'David' and 'David' ) group by tbl_4.col_16 order by r0,r1,r2 limit 1; id estRows task access object operator info Projection_13 1.00 root character_length(inlj_inner_multi_pattern.tbl_4.col_16)->Column#14, Column#13, inlj_inner_multi_pattern.tbl_3.col_11 └─Projection_33 1.00 root Column#13, inlj_inner_multi_pattern.tbl_3.col_11, inlj_inner_multi_pattern.tbl_4.col_16 └─TopN_16 1.00 root Column#17, Column#13, inlj_inner_multi_pattern.tbl_3.col_11, offset:0, count:1 └─Projection_34 6393.60 root Column#13, inlj_inner_multi_pattern.tbl_3.col_11, inlj_inner_multi_pattern.tbl_4.col_16, character_length(inlj_inner_multi_pattern.tbl_4.col_16)->Column#17 └─HashAgg_18 6393.60 root group by:inlj_inner_multi_pattern.tbl_4.col_16, funcs:approx_percentile(inlj_inner_multi_pattern.tbl_4.col_16, 22)->Column#13, funcs:firstrow(inlj_inner_multi_pattern.tbl_3.col_11)->inlj_inner_multi_pattern.tbl_3.col_11, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_21 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_3.col_8, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_23(Build) 10000.00 root data:TableFullScan_22 │ └─TableFullScan_22 10000.00 cop[tikv] table:tbl_3 keep order:false, stats:pseudo └─Selection_24(Probe) 7992.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "David"))) └─TableReader_27 9990.00 root data:Selection_26 └─Selection_26 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_25 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ reverse( tbl_10.col_52 ) as r0 , ascii( tbl_10.col_52 ) as r1 , bit_or( tbl_10.col_52 ) as r2 , length( tbl_10.col_52 ) as r3 , var_pop( tbl_10.col_52 ) as r4 from tbl_4 join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where not( IsNull( tbl_4.col_17 ) ) order by r0,r1,r2,r3,r4; id estRows task access object operator info Sort_12 1.00 root Column#8, Column#9, Column#6, Column#10, Column#7 └─Projection_14 1.00 root reverse(inlj_inner_multi_pattern.tbl_10.col_52)->Column#8, ascii(to_binary(inlj_inner_multi_pattern.tbl_10.col_52))->Column#9, Column#6, length(to_binary(inlj_inner_multi_pattern.tbl_10.col_52))->Column#10, Column#7 └─HashAgg_15 1.00 root funcs:bit_or(Column#15)->Column#6, funcs:var_pop(Column#16)->Column#7, funcs:firstrow(Column#17)->inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_32 9990.00 root cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY)->Column#15, cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#16, inlj_inner_multi_pattern.tbl_10.col_52 └─HashJoin_19 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_21(Build) 10000.00 root data:TableFullScan_20 │ └─TableFullScan_20 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_22(Probe) 7992.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─TableReader_25 9990.00 root data:Selection_24 └─Selection_24 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_23 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_10 ) */ tbl_9.col_49 as r0 , tbl_9.col_49 as r1 , reverse( tbl_9.col_46 ) as r2 , locate( tbl_9.col_44 , tbl_9.col_46 ) as r3 , tbl_9.col_48 as r4 from tbl_10 left join tbl_9 on tbl_10.col_52 = tbl_9.col_51 where tbl_9.col_48 in ( 'Alice' ,'David' ); id estRows task access object operator info Projection_10 10000.00 root inlj_inner_multi_pattern.tbl_9.col_49, inlj_inner_multi_pattern.tbl_9.col_49, reverse(inlj_inner_multi_pattern.tbl_9.col_46)->Column#13, locate(inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_46)->Column#14, inlj_inner_multi_pattern.tbl_9.col_48 └─HashJoin_12 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_51, Column#15)] ├─Projection_17(Build) 10000.00 root cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#15 │ └─TableReader_19 10000.00 root data:TableFullScan_18 │ └─TableFullScan_18 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_14(Probe) 8000.00 root in(inlj_inner_multi_pattern.tbl_9.col_48, "Alice", "David") └─TableReader_16 10000.00 root data:TableFullScan_15 └─TableFullScan_15 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_9 ) */ concat( tbl_9.col_46 , tbl_9.col_44 ) as r0 , rpad( tbl_4.col_16 , 4 , tbl_4.col_16 ) as r1 from tbl_4 right join tbl_9 on tbl_4.col_17 = tbl_9.col_48 where tbl_4.col_16 in ( 'EmWPH5cZQK' ) or tbl_4.col_16 in ( ')Yc' ); id estRows task access object operator info Projection_9 16.00 root concat(inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_44)->Column#14, rpad(inlj_inner_multi_pattern.tbl_4.col_16, 4, inlj_inner_multi_pattern.tbl_4.col_16)->Column#15 └─HashJoin_11 16.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_48)] ├─Selection_12(Build) 12.80 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) │ └─IndexLookUp_19 16.00 root │ ├─IndexRangeScan_16(Build) 20.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range:[")Yc",")Yc"], ["EmWPH","EmWPH"], keep order:false, stats:pseudo │ └─Selection_18(Probe) 16.00 cop[tikv] or(eq(inlj_inner_multi_pattern.tbl_4.col_16, "EmWPH5cZQK"), eq(inlj_inner_multi_pattern.tbl_4.col_16, ")Yc")) │ └─TableRowIDScan_17 20.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─Selection_20(Probe) 8000.00 root not(isnull(inlj_inner_multi_pattern.tbl_9.col_48)) └─TableReader_22 10000.00 root data:TableFullScan_21 └─TableFullScan_21 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ sum( distinct tbl_4.col_16 ) as r0 , tbl_10.col_52 as r1 from tbl_4 join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where tbl_4.col_17 > 'Bob' order by r0,r1 limit 59; id estRows task access object operator info TopN_17 1.00 root Column#6, inlj_inner_multi_pattern.tbl_10.col_52, offset:0, count:59 └─HashAgg_22 1.00 root funcs:sum(distinct Column#8)->Column#6, funcs:firstrow(Column#9)->inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_39 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#8, inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_24 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52 └─HashJoin_26 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_28(Build) 10000.00 root data:TableFullScan_27 │ └─TableFullScan_27 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_29(Probe) 7992.00 root gt(inlj_inner_multi_pattern.tbl_4.col_17, "Bob") └─TableReader_32 9990.00 root data:Selection_31 └─Selection_31 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_30 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ char( tbl_4.col_17 , tbl_4.col_17 using utf8mb4 ) as r0 , tbl_10.col_52 as r1 , char( tbl_10.col_52 , tbl_10.col_52 using utf8 ) as r2 , tbl_10.col_52 as r3 from tbl_4 right join tbl_10 on tbl_4.col_17 = tbl_10.col_52 where tbl_4.col_16 in ( 'B!k8k0pCBS9TGWB5wd2' ,'4uH~R0^-uQ@v1BzH' ) and not( IsNull( tbl_4.col_16 ) ) order by r0,r1,r2,r3 limit 74; id estRows task access object operator info Projection_11 16.00 root char_func(cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), utf8mb4)->Column#6, inlj_inner_multi_pattern.tbl_10.col_52, char_func(cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY), cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY), utf8)->Column#7, inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_29 16.00 root inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52 └─TopN_14 16.00 root Column#9, inlj_inner_multi_pattern.tbl_10.col_52, Column#10, offset:0, count:74 └─Projection_30 16.00 root inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52, char_func(cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), utf8mb4)->Column#9, char_func(cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY), cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY), utf8)->Column#10 └─HashJoin_17 16.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52)] ├─Selection_18(Build) 12.80 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) │ └─IndexLookUp_26 16.00 root │ ├─Selection_24(Build) 19.98 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ │ └─IndexRangeScan_22 20.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range:["4uH~R","4uH~R"], ["B!k8k","B!k8k"], keep order:false, stats:pseudo │ └─Selection_25(Probe) 16.00 cop[tikv] in(inlj_inner_multi_pattern.tbl_4.col_16, "B!k8k0pCBS9TGWB5wd2", "4uH~R0^-uQ@v1BzH") │ └─TableRowIDScan_23 19.98 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─TableReader_28(Probe) 10000.00 root data:TableFullScan_27 └─TableFullScan_27 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ stddev_samp( tbl_10.col_52 ) as r0 , tbl_4.col_16 as r1 , rpad( tbl_10.col_52 , 4 , tbl_10.col_52 ) as r2 , repeat( tbl_10.col_52 , tbl_10.col_52 ) as r3 , oct( tbl_10.col_52 ) as r4 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_4.col_17 <> 'Bob' ) or not( tbl_4.col_17 between 'David' and 'David' ) group by tbl_10.col_52 order by r0,r1,r2,r3,r4; id estRows task access object operator info Sort_11 8000.00 root Column#6, inlj_inner_multi_pattern.tbl_4.col_16, Column#7, Column#8, Column#9 └─Projection_13 8000.00 root Column#6, inlj_inner_multi_pattern.tbl_4.col_16, rpad(inlj_inner_multi_pattern.tbl_10.col_52, 4, inlj_inner_multi_pattern.tbl_10.col_52)->Column#7, repeat(inlj_inner_multi_pattern.tbl_10.col_52, cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY))->Column#8, oct(inlj_inner_multi_pattern.tbl_10.col_52)->Column#9 └─HashAgg_14 8000.00 root group by:Column#17, funcs:stddev_samp(Column#14)->Column#6, funcs:firstrow(Column#15)->inlj_inner_multi_pattern.tbl_10.col_52, funcs:firstrow(Column#16)->inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_26 9990.00 root cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#14, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52 └─HashJoin_16 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_18(Build) 10000.00 root data:TableFullScan_17 │ └─TableFullScan_17 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_19(Probe) 7992.00 root or(not(ne(inlj_inner_multi_pattern.tbl_4.col_17, "Bob")), not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "David")))) └─TableReader_22 9990.00 root data:Selection_21 └─Selection_21 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_20 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_1 ) */ tbl_1.col_6 as r0 , make_set( 4 , tbl_9.col_46 , tbl_9.col_50 ) as r1 , tbl_9.col_47 as r2 from tbl_9 join tbl_1 on tbl_9.col_51 = tbl_1.col_5 where IsNull( tbl_9.col_48 ) order by r0,r1,r2 limit 14; id estRows task access object operator info Projection_14 14.00 root inlj_inner_multi_pattern.tbl_1.col_6, make_set(4, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_50)->Column#18, inlj_inner_multi_pattern.tbl_9.col_47 └─Projection_29 14.00 root inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_47, inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_1.col_6 └─TopN_17 14.00 root inlj_inner_multi_pattern.tbl_1.col_6, Column#21, inlj_inner_multi_pattern.tbl_9.col_47, offset:0, count:14 └─Projection_30 10000.00 root inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_47, inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_1.col_6, make_set(4, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_50)->Column#21 └─HashJoin_20 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_51, Column#19)] ├─Projection_25(Build) 10000.00 root inlj_inner_multi_pattern.tbl_1.col_6, cast(inlj_inner_multi_pattern.tbl_1.col_5, double BINARY)->Column#19 │ └─TableReader_27 10000.00 root data:TableFullScan_26 │ └─TableFullScan_26 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_22(Probe) 8000.00 root isnull(inlj_inner_multi_pattern.tbl_9.col_48) └─TableReader_24 10000.00 root data:TableFullScan_23 └─TableFullScan_23 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ max( distinct tbl_4.col_16 ) as r0 , bit_xor( tbl_4.col_16 ) as r1 , lcase( tbl_4.col_16 ) as r2 , min( tbl_10.col_52 ) as r3 from tbl_10 left join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where tbl_4.col_16 < '' and not( tbl_4.col_17 <> 'David' ); id estRows task access object operator info Projection_10 1.00 root Column#6, Column#7, lcase(inlj_inner_multi_pattern.tbl_4.col_16)->Column#9, Column#8 └─HashAgg_11 1.00 root funcs:max(distinct Column#12)->Column#6, funcs:bit_xor(Column#13)->Column#7, funcs:min(Column#14)->Column#8, funcs:firstrow(Column#15)->inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_29 3323.33 root inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY)->Column#13, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_13 3323.33 root inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_15 3323.33 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)] ├─Selection_16(Build) 2658.67 root not(ne(inlj_inner_multi_pattern.tbl_4.col_17, "David")) │ └─TableReader_19 3323.33 root data:Selection_18 │ └─Selection_18 3323.33 cop[tikv] lt(inlj_inner_multi_pattern.tbl_4.col_16, ""), not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─TableFullScan_17 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─TableReader_25(Probe) 10000.00 root data:TableFullScan_24 └─TableFullScan_24 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ stddev_samp( tbl_4.col_16 ) as r0 from tbl_4 right join tbl_10 on tbl_4.col_17 = tbl_10.col_52 where tbl_4.col_16 in ( 'Rt!%(' ,'f9S*4p3R#' ,'Rt!%(' ,'B!k8k0pCBS9TGWB5wd2' ) and tbl_4.col_17 between 'Bob' and 'Bob'; id estRows task access object operator info StreamAgg_11 1.00 root funcs:stddev_samp(Column#8)->Column#6 └─Projection_26 30.00 root cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#8 └─HashJoin_25 30.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52)] ├─Selection_14(Build) 24.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"), not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) │ └─IndexLookUp_21 30.00 root │ ├─IndexRangeScan_18(Build) 30.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range:["B!k8k","B!k8k"], ["f9S*4","f9S*4"], ["Rt!%(","Rt!%("], keep order:false, stats:pseudo │ └─Selection_20(Probe) 30.00 cop[tikv] in(inlj_inner_multi_pattern.tbl_4.col_16, "Rt!%(", "f9S*4p3R#", "Rt!%(", "B!k8k0pCBS9TGWB5wd2") │ └─TableRowIDScan_19 30.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─TableReader_23(Probe) 10000.00 root data:TableFullScan_22 └─TableFullScan_22 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_1 ) */ min( distinct tbl_1.col_2 ) as r0 from tbl_4 right join tbl_1 on tbl_4.col_16 = tbl_1.col_5 where not( tbl_4.col_17 between 'Bob' and 'Alice' ) group by tbl_1.col_2; id estRows task access object operator info HashAgg_11 8000.00 root group by:inlj_inner_multi_pattern.tbl_1.col_2, funcs:min(distinct inlj_inner_multi_pattern.tbl_1.col_2)->Column#11 └─HashJoin_16 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_1.col_5, inlj_inner_multi_pattern.tbl_4.col_16)] ├─IndexReader_20(Build) 10000.00 root index:IndexFullScan_19 │ └─IndexFullScan_19 10000.00 cop[tikv] table:tbl_1, index:PRIMARY(col_2, col_5) keep order:false, stats:pseudo └─Selection_21(Probe) 7992.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Alice"))) └─TableReader_24 9990.00 root data:Selection_23 └─Selection_23 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_22 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ tbl_4.col_17 as r0 , right( tbl_10.col_52 , 4 ) as r1 , char( tbl_4.col_17 , tbl_4.col_17 using utf8 ) as r2 from tbl_10 left join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where tbl_4.col_17 between 'Alice' and 'David' order by r0,r1,r2; id estRows task access object operator info Sort_9 9990.00 root inlj_inner_multi_pattern.tbl_4.col_17, Column#6, Column#7 └─Projection_11 9990.00 root inlj_inner_multi_pattern.tbl_4.col_17, right(inlj_inner_multi_pattern.tbl_10.col_52, 4)->Column#6, char_func(cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), utf8)->Column#7 └─HashJoin_13 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_15(Build) 10000.00 root data:TableFullScan_14 │ └─TableFullScan_14 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_16(Probe) 7992.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "Alice"), le(inlj_inner_multi_pattern.tbl_4.col_17, "David") └─TableReader_19 9990.00 root data:Selection_18 └─Selection_18 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_17 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ tbl_10.col_52 as r0 , tbl_4.col_17 as r1 from tbl_10 right join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_10.col_52 <= 't文髻=CXo檽睙F=团4鴶)瘃观' ) and tbl_4.col_17 between 'Alice' and 'Charlie'; id estRows task access object operator info HashJoin_10 4166.67 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_13(Build) 3333.33 root data:Selection_12 │ └─Selection_12 3333.33 cop[tikv] gt(inlj_inner_multi_pattern.tbl_10.col_52, "t文髻=CXo檽睙F=团4鴶)瘃观") │ └─TableFullScan_11 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_14(Probe) 7992.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "Alice"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie") └─TableReader_17 9990.00 root data:Selection_16 └─Selection_16 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_15 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_1 ) */ oct( tbl_1.col_2 ) as r0 , replace( tbl_4.col_16 , tbl_4.col_16 , tbl_4.col_16 ) as r1 , bit_or( tbl_1.col_2 ) as r2 , tbl_4.col_16 as r3 from tbl_1 join tbl_4 on tbl_1.col_4 = tbl_4.col_16 where not( tbl_4.col_17 != 'Charlie' ) order by r0,r1,r2,r3 limit 71; id estRows task access object operator info Projection_15 1.00 root oct(inlj_inner_multi_pattern.tbl_1.col_2)->Column#12, replace(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#13, Column#11, inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_34 1.00 root Column#11, inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_4.col_16 └─TopN_18 1.00 root Column#18, Column#19, Column#11, inlj_inner_multi_pattern.tbl_4.col_16, offset:0, count:71 └─Projection_35 1.00 root Column#11, inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_4.col_16, oct(inlj_inner_multi_pattern.tbl_1.col_2)->Column#18, replace(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#19 └─HashAgg_20 1.00 root funcs:bit_or(inlj_inner_multi_pattern.tbl_1.col_2)->Column#11, funcs:firstrow(inlj_inner_multi_pattern.tbl_1.col_2)->inlj_inner_multi_pattern.tbl_1.col_2, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_22 10000.00 root inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_23 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#16)] ├─Projection_28(Build) 10000.00 root inlj_inner_multi_pattern.tbl_1.col_2, cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#16 │ └─TableReader_30 10000.00 root data:TableFullScan_29 │ └─TableFullScan_29 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_25(Probe) 8000.00 root not(ne(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie")) └─TableReader_27 10000.00 root data:TableFullScan_26 └─TableFullScan_26 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_1 , tbl_4 ) */ tbl_1.col_2 as r0 , tbl_1.col_1 as r1 , bit_and( tbl_4.col_16 ) as r2 , tbl_1.col_6 as r3 from tbl_1 join tbl_4 on tbl_1.col_4 = tbl_4.col_16 where tbl_4.col_17 between 'David' and 'David' and not( tbl_4.col_17 != 'Charlie' ) group by tbl_4.col_16 order by r0,r1,r2,r3; id estRows task access object operator info Sort_13 6400.00 root inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_1.col_1, Column#11, inlj_inner_multi_pattern.tbl_1.col_6 └─Projection_15 6400.00 root inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_1.col_1, Column#11, inlj_inner_multi_pattern.tbl_1.col_6 └─HashAgg_16 6400.00 root group by:Column#18, funcs:bit_and(Column#14)->Column#11, funcs:firstrow(Column#15)->inlj_inner_multi_pattern.tbl_1.col_1, funcs:firstrow(Column#16)->inlj_inner_multi_pattern.tbl_1.col_2, funcs:firstrow(Column#17)->inlj_inner_multi_pattern.tbl_1.col_6 └─Projection_31 10000.00 root cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY)->Column#14, inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_1.col_6, inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_18 10000.00 root inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_1.col_6, inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_19 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#12)] ├─Projection_24(Build) 10000.00 root inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_1.col_6, cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#12 │ └─TableReader_26 10000.00 root data:TableFullScan_25 │ └─TableFullScan_25 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_21(Probe) 8000.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "David"), not(ne(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie")) └─TableReader_23 10000.00 root data:TableFullScan_22 └─TableFullScan_22 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ sum( tbl_4.col_16 ) as r0 , stddev_pop( tbl_4.col_16 ) as r1 , tbl_4.col_16 as r2 , trim( tbl_9.col_46 ) as r3 , approx_count_distinct( tbl_9.col_49 ) as r4 from tbl_4 join tbl_9 on tbl_4.col_16 = tbl_9.col_46 where not( tbl_4.col_17 in ( 'Alice' ,'Charlie' ,'David' ) ) group by tbl_4.col_16,tbl_9.col_49; id estRows task access object operator info Projection_11 8000.00 root Column#14, Column#15, inlj_inner_multi_pattern.tbl_4.col_16, trim(inlj_inner_multi_pattern.tbl_9.col_46)->Column#17, Column#16 └─HashAgg_12 8000.00 root group by:Column#25, Column#26, funcs:sum(Column#20)->Column#14, funcs:stddev_pop(Column#21)->Column#15, funcs:approx_count_distinct(Column#22)->Column#16, funcs:firstrow(Column#23)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(Column#24)->inlj_inner_multi_pattern.tbl_9.col_46 └─Projection_25 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#20, cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#21, inlj_inner_multi_pattern.tbl_9.col_49, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_49 └─Projection_13 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_49 └─HashJoin_15 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_17(Build) 10000.00 root data:TableFullScan_16 │ └─TableFullScan_16 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_18(Probe) 7992.00 root not(in(inlj_inner_multi_pattern.tbl_4.col_17, "Alice", "Charlie", "David")) └─TableReader_21 9990.00 root data:Selection_20 └─Selection_20 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_19 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ sum( tbl_4.col_17 ) as r0 , tbl_10.col_52 as r1 from tbl_4 join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where tbl_4.col_17 in ( 'Charlie' ,'David' ,'Bob' ,'David' ,'David' ) group by tbl_4.col_17; id estRows task access object operator info HashAgg_12 6393.60 root group by:Column#10, funcs:sum(Column#8)->Column#6, funcs:firstrow(Column#9)->inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_25 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#8, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_13 9990.00 root inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52 └─HashJoin_15 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_17(Build) 10000.00 root data:TableFullScan_16 │ └─TableFullScan_16 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_18(Probe) 7992.00 root in(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie", "David", "Bob", "David", "David") └─TableReader_21 9990.00 root data:Selection_20 └─Selection_20 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_19 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_10 ) */ sum( distinct tbl_10.col_52 ) as r0 , reverse( tbl_10.col_52 ) as r1 , left( tbl_9.col_44 , 0 ) as r2 from tbl_9 right join tbl_10 on tbl_9.col_44 = tbl_10.col_52 where tbl_9.col_51 in ( select col_52 from tbl_10 where tbl_9.col_44 between 'xXk!X' and '#)-n$c7W' or tbl_9.col_44 in ( select col_40 from tbl_8 where not( tbl_9.col_43 >= 7100.241665472305 ) and tbl_10.col_52 in ( select col_41 from tbl_8 where tbl_9.col_43 > 7100.241665472305 and IsNull( tbl_9.col_45 ) ) ) ) and not( tbl_9.col_48 != 'Bob' ) group by tbl_10.col_52; id estRows task access object operator info Projection_23 8000.00 root Column#30, reverse(inlj_inner_multi_pattern.tbl_10.col_52)->Column#31, left(inlj_inner_multi_pattern.tbl_9.col_44, 0)->Column#32 └─HashAgg_24 8000.00 root group by:Column#41, funcs:sum(distinct Column#38)->Column#30, funcs:firstrow(Column#39)->inlj_inner_multi_pattern.tbl_9.col_44, funcs:firstrow(Column#40)->inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_50 10000.00 root cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#38, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52 └─Apply_26 10000.00 root semi join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_51, Column#35)], other cond:or(and(ge(inlj_inner_multi_pattern.tbl_9.col_44, "xXk!X"), le(inlj_inner_multi_pattern.tbl_9.col_44, "#)-n$c7W")), Column#29) ├─Projection_27(Build) 10000.00 root inlj_inner_multi_pattern.tbl_9.col_43, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_45, inlj_inner_multi_pattern.tbl_9.col_51, inlj_inner_multi_pattern.tbl_10.col_52 │ └─HashJoin_28 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_9.col_44)] │ ├─Selection_32(Build) 8000.00 root not(ne(inlj_inner_multi_pattern.tbl_9.col_48, "Bob")) │ │ └─TableReader_34 10000.00 root data:TableFullScan_33 │ │ └─TableFullScan_33 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo │ └─TableReader_31(Probe) 10000.00 root data:TableFullScan_30 │ └─TableFullScan_30 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Projection_35(Probe) 100000000.00 root Column#29, cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#35 └─Apply_37 100000000.00 root CARTESIAN left outer semi join, other cond:eq(cast(inlj_inner_multi_pattern.tbl_9.col_44, json BINARY), inlj_inner_multi_pattern.tbl_8.col_40) ├─TableReader_39(Build) 100000000.00 root data:TableFullScan_38 │ └─TableFullScan_38 100000000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─HashJoin_40(Probe) 640000000000.00 root CARTESIAN semi join ├─IndexReader_49(Build) 800000000000.00 root index:Selection_48 │ └─Selection_48 800000000000.00 cop[tikv] eq(cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY), cast(inlj_inner_multi_pattern.tbl_8.col_41, double BINARY)), gt(inlj_inner_multi_pattern.tbl_9.col_43, 7100.241665472305), isnull(inlj_inner_multi_pattern.tbl_9.col_45), lt(inlj_inner_multi_pattern.tbl_9.col_43, 7100.241665472305) │ └─IndexFullScan_47 1000000000000.00 cop[tikv] table:tbl_8, index:PRIMARY(col_41, col_39) keep order:false, stats:pseudo └─TableReader_43(Probe) 800000000000.00 root data:Selection_42 └─Selection_42 800000000000.00 cop[tikv] lt(inlj_inner_multi_pattern.tbl_9.col_43, 7100.241665472305) └─TableFullScan_41 1000000000000.00 cop[tikv] table:tbl_8 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_3 , tbl_4 ) */ replace( tbl_4.col_16 , tbl_4.col_16 , tbl_4.col_16 ) as r0 , lower( tbl_3.col_14 ) as r1 , avg( tbl_4.col_17 ) as r2 , tbl_3.col_15 as r3 from tbl_3 left join tbl_4 on tbl_3.col_8 = tbl_4.col_16 where not( tbl_4.col_17 in ( 'David' ) ) order by r0,r1,r2,r3 limit 16; id estRows task access object operator info Projection_12 1.00 root replace(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#14, lower(inlj_inner_multi_pattern.tbl_3.col_14)->Column#15, Column#13, inlj_inner_multi_pattern.tbl_3.col_15 └─Projection_33 1.00 root Column#13, inlj_inner_multi_pattern.tbl_3.col_14, inlj_inner_multi_pattern.tbl_3.col_15, inlj_inner_multi_pattern.tbl_4.col_16 └─TopN_15 1.00 root Column#23, Column#24, Column#13, inlj_inner_multi_pattern.tbl_3.col_15, offset:0, count:16 └─Projection_34 1.00 root Column#13, inlj_inner_multi_pattern.tbl_3.col_14, inlj_inner_multi_pattern.tbl_3.col_15, inlj_inner_multi_pattern.tbl_4.col_16, replace(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#23, lower(inlj_inner_multi_pattern.tbl_3.col_14)->Column#24 └─HashAgg_17 1.00 root funcs:avg(Column#19)->Column#13, funcs:firstrow(Column#20)->inlj_inner_multi_pattern.tbl_3.col_14, funcs:firstrow(Column#21)->inlj_inner_multi_pattern.tbl_3.col_15, funcs:firstrow(Column#22)->inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_32 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#19, inlj_inner_multi_pattern.tbl_3.col_14, inlj_inner_multi_pattern.tbl_3.col_15, inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_19 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_3.col_8, inlj_inner_multi_pattern.tbl_4.col_16)] ├─Selection_23(Build) 7992.00 root not(eq(inlj_inner_multi_pattern.tbl_4.col_17, "David")) │ └─TableReader_26 9990.00 root data:Selection_25 │ └─Selection_25 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─TableFullScan_24 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─TableReader_22(Probe) 10000.00 root data:TableFullScan_21 └─TableFullScan_21 10000.00 cop[tikv] table:tbl_3 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ elt(2, tbl_4.col_16 , tbl_4.col_16 ) as r0 , group_concat( distinct tbl_4.col_16 order by tbl_4.col_16 ) as r1 from tbl_4 right join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where tbl_4.col_17 in ( 'Bob' ,'Charlie' ) group by tbl_4.col_16 order by r0,r1 limit 66; id estRows task access object operator info Projection_13 66.00 root elt(2, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#7, Column#6 └─Projection_40 66.00 root Column#6, inlj_inner_multi_pattern.tbl_4.col_16 └─TopN_16 66.00 root Column#10, Column#6, offset:0, count:66 └─Projection_41 6393.60 root Column#6, inlj_inner_multi_pattern.tbl_4.col_16, elt(2, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#10 └─HashAgg_18 6393.60 root group by:inlj_inner_multi_pattern.tbl_4.col_16, funcs:group_concat(distinct inlj_inner_multi_pattern.tbl_4.col_16 order by inlj_inner_multi_pattern.tbl_4.col_16 separator ",")->Column#6, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_22 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_24(Build) 10000.00 root data:TableFullScan_23 │ └─TableFullScan_23 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_25(Probe) 7992.00 root in(inlj_inner_multi_pattern.tbl_4.col_17, "Bob", "Charlie") └─TableReader_28 9990.00 root data:Selection_27 └─Selection_27 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_26 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_2 , tbl_9 ) */ bit_xor( tbl_2.col_7 ) as r0 , var_samp( tbl_9.col_45 ) as r1 from tbl_9 join tbl_2 on tbl_9.col_47 = tbl_2.col_7 where not( tbl_9.col_48 >= 'David' ) and not( tbl_2.col_7 <= '4' ) order by r0,r1 limit 59; id estRows task access object operator info TopN_18 1.00 root Column#12, Column#13, offset:0, count:59 └─HashAgg_23 1.00 root funcs:bit_xor(Column#16)->Column#12, funcs:var_samp(Column#17)->Column#13 └─Projection_42 4166.67 root cast(inlj_inner_multi_pattern.tbl_2.col_7, bigint(255) BINARY)->Column#16, inlj_inner_multi_pattern.tbl_9.col_45 └─Projection_25 4166.67 root inlj_inner_multi_pattern.tbl_9.col_45, inlj_inner_multi_pattern.tbl_2.col_7 └─HashJoin_27 4166.67 root inner join, equal:[eq(Column#14, inlj_inner_multi_pattern.tbl_9.col_47)] ├─Projection_28(Build) 3333.33 root inlj_inner_multi_pattern.tbl_2.col_7, cast(inlj_inner_multi_pattern.tbl_2.col_7, datetime(6) BINARY)->Column#14 │ └─TableReader_31 3333.33 root data:Selection_30 │ └─Selection_30 3333.33 cop[tikv] gt(inlj_inner_multi_pattern.tbl_2.col_7, "4") │ └─TableRangeScan_29 3333.33 cop[tikv] table:tbl_2 range:(0x34,+inf], keep order:false, stats:pseudo └─Selection_36(Probe) 8000.00 root not(ge(inlj_inner_multi_pattern.tbl_9.col_48, "David")) └─TableReader_38 10000.00 root data:TableFullScan_37 └─TableFullScan_37 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ tbl_4.col_16 as r0 , replace( tbl_10.col_52 , tbl_10.col_52 , tbl_10.col_52 ) as r1 , count( distinct tbl_10.col_52 ) as r2 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_4.col_17 = 'David' ) group by tbl_10.col_52; id estRows task access object operator info Projection_10 8000.00 root inlj_inner_multi_pattern.tbl_4.col_16, replace(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52)->Column#7, Column#6 └─HashAgg_11 8000.00 root group by:inlj_inner_multi_pattern.tbl_10.col_52, funcs:count(distinct inlj_inner_multi_pattern.tbl_10.col_52)->Column#6, funcs:firstrow(inlj_inner_multi_pattern.tbl_10.col_52)->inlj_inner_multi_pattern.tbl_10.col_52, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_13 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_15(Build) 10000.00 root data:TableFullScan_14 │ └─TableFullScan_14 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_16(Probe) 7992.00 root not(eq(inlj_inner_multi_pattern.tbl_4.col_17, "David")) └─TableReader_19 9990.00 root data:Selection_18 └─Selection_18 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_17 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ tbl_4.col_16 as r0 , ltrim( tbl_4.col_16 ) as r1 , count( tbl_10.col_52 ) as r2 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where IsNull( tbl_4.col_17 ) and not( tbl_4.col_16 in ( 'Rt!%(' ,'Rt!%(' ,'EmWPH5cZQK' ,null ,'B!k8k0pCBS9TGWB5wd2' ) ); id estRows task access object operator info Projection_11 1.00 root inlj_inner_multi_pattern.tbl_4.col_16, ltrim(inlj_inner_multi_pattern.tbl_4.col_16)->Column#7, Column#6 └─StreamAgg_13 1.00 root funcs:count(inlj_inner_multi_pattern.tbl_10.col_52)->Column#6, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_14 0.00 root inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_16 0.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)] ├─Selection_17(Build) 0.00 root isnull(inlj_inner_multi_pattern.tbl_4.col_17) │ └─TableDual_18 0.00 root rows:0 └─TableReader_20(Probe) 10000.00 root data:TableFullScan_19 └─TableFullScan_19 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_1 ) */ count( tbl_1.col_2 ) as r0 , to_base64( tbl_1.col_5 ) as r1 , trim( tbl_1.col_1 ) as r2 , tbl_4.col_17 as r3 , var_samp( tbl_1.col_2 ) as r4 from tbl_4 right join tbl_1 on tbl_4.col_16 = tbl_1.col_4 where not( IsNull( tbl_4.col_17 ) ) group by tbl_1.col_2 order by r0,r1,r2,r3,r4 limit 37; id estRows task access object operator info Projection_14 37.00 root Column#11, to_base64(to_binary(inlj_inner_multi_pattern.tbl_1.col_5))->Column#13, trim(inlj_inner_multi_pattern.tbl_1.col_1)->Column#14, inlj_inner_multi_pattern.tbl_4.col_17, Column#12 └─Projection_35 37.00 root Column#11, Column#12, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_5 └─TopN_17 37.00 root Column#11, Column#25, Column#26, inlj_inner_multi_pattern.tbl_4.col_17, Column#12, offset:0, count:37 └─Projection_36 8000.00 root Column#11, Column#12, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_5, to_base64(to_binary(inlj_inner_multi_pattern.tbl_1.col_5))->Column#25, trim(inlj_inner_multi_pattern.tbl_1.col_1)->Column#26 └─HashAgg_19 8000.00 root group by:Column#24, funcs:count(Column#19)->Column#11, funcs:var_samp(Column#20)->Column#12, funcs:firstrow(Column#21)->inlj_inner_multi_pattern.tbl_4.col_17, funcs:firstrow(Column#22)->inlj_inner_multi_pattern.tbl_1.col_1, funcs:firstrow(Column#23)->inlj_inner_multi_pattern.tbl_1.col_5 └─Projection_34 10000.00 root inlj_inner_multi_pattern.tbl_1.col_2, cast(inlj_inner_multi_pattern.tbl_1.col_2, double UNSIGNED BINARY)->Column#20, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_5, inlj_inner_multi_pattern.tbl_1.col_2 └─HashJoin_23 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#17)] ├─Projection_28(Build) 10000.00 root inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_2, inlj_inner_multi_pattern.tbl_1.col_5, cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#17 │ └─TableReader_30 10000.00 root data:TableFullScan_29 │ └─TableFullScan_29 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_25(Probe) 8000.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─TableReader_27 10000.00 root data:TableFullScan_26 └─TableFullScan_26 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_9 ) */ from_base64( tbl_9.col_44 ) as r0 , bit_xor( tbl_9.col_45 ) as r1 , min( distinct tbl_4.col_17 ) as r2 , tbl_9.col_48 as r3 , bit_or( tbl_4.col_16 ) as r4 from tbl_4 join tbl_9 on tbl_4.col_16 = tbl_9.col_46 where not( IsNull( tbl_4.col_17 ) ) or not( tbl_4.col_17 in ( 'David' ,'David' ) ) group by tbl_9.col_45,tbl_4.col_16,tbl_4.col_17; id estRows task access object operator info Projection_11 8000.00 root from_base64(inlj_inner_multi_pattern.tbl_9.col_44)->Column#17, Column#14, Column#15, inlj_inner_multi_pattern.tbl_9.col_48, Column#16 └─HashAgg_12 8000.00 root group by:Column#25, Column#26, Column#27, funcs:bit_xor(Column#20)->Column#14, funcs:min(distinct Column#21)->Column#15, funcs:bit_or(Column#22)->Column#16, funcs:firstrow(Column#23)->inlj_inner_multi_pattern.tbl_9.col_44, funcs:firstrow(Column#24)->inlj_inner_multi_pattern.tbl_9.col_48 └─Projection_25 9990.00 root cast(inlj_inner_multi_pattern.tbl_9.col_45, bigint(22) BINARY)->Column#20, inlj_inner_multi_pattern.tbl_4.col_17, cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY)->Column#22, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_48, inlj_inner_multi_pattern.tbl_9.col_45, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_13 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_45, inlj_inner_multi_pattern.tbl_9.col_48 └─HashJoin_15 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_17(Build) 10000.00 root data:TableFullScan_16 │ └─TableFullScan_16 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_18(Probe) 7992.00 root or(not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)), not(in(inlj_inner_multi_pattern.tbl_4.col_17, "David", "David"))) └─TableReader_21 9990.00 root data:Selection_20 └─Selection_20 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_19 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ export_set( 6 , tbl_10.col_52 , tbl_10.col_52 , '-', 8) as r0 from tbl_10 right join tbl_4 on tbl_10.col_52 = tbl_4.col_17 where not( tbl_10.col_52 between '獑!5H(#g慭琷l' and '' ) and not( tbl_4.col_16 <> 'Rt!%(' ) order by r0 limit 30; id estRows task access object operator info Projection_12 10.00 root export_set(6, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52, -, 8)->Column#6 └─Projection_32 10.00 root inlj_inner_multi_pattern.tbl_10.col_52 └─TopN_15 10.00 root Column#8, offset:0, count:30 └─Projection_33 10.00 root inlj_inner_multi_pattern.tbl_10.col_52, export_set(6, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52, -, 8)->Column#8 └─HashJoin_19 10.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52)] ├─Selection_20(Build) 8.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) │ └─IndexLookUp_27 10.00 root │ ├─IndexRangeScan_24(Build) 10.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range:["Rt!%(","Rt!%("], keep order:false, stats:pseudo │ └─Selection_26(Probe) 10.00 cop[tikv] eq(inlj_inner_multi_pattern.tbl_4.col_16, "Rt!%(") │ └─TableRowIDScan_25 10.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─TableReader_30(Probe) 9990.00 root data:Selection_29 └─Selection_29 9990.00 cop[tikv] or(lt(inlj_inner_multi_pattern.tbl_10.col_52, "獑!5H(#g慭琷l"), gt(inlj_inner_multi_pattern.tbl_10.col_52, "")) └─TableFullScan_28 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_5 , tbl_4 ) */ approx_percentile( tbl_5.col_21 , 66 ) as r0 , mid( tbl_5.col_20 , 0 , 0 ) as r1 from tbl_4 right join tbl_5 on tbl_5.col_22 = tbl_4.col_16 where not( tbl_4.col_17 between 'Alice' and 'Alice' ) and not( tbl_4.col_17 between 'Charlie' and 'Charlie' ) order by r0,r1 limit 58; id estRows task access object operator info Projection_13 1.00 root Column#14, mid(cast(inlj_inner_multi_pattern.tbl_5.col_20, var_string(5)), 0, 0)->Column#15 └─Projection_35 1.00 root Column#14, inlj_inner_multi_pattern.tbl_5.col_20 └─TopN_16 1.00 root Column#14, Column#18, offset:0, count:58 └─Projection_36 1.00 root Column#14, inlj_inner_multi_pattern.tbl_5.col_20, mid(cast(inlj_inner_multi_pattern.tbl_5.col_20, var_string(5)), 0, 0)->Column#18 └─HashAgg_18 1.00 root funcs:approx_percentile(inlj_inner_multi_pattern.tbl_5.col_21, 66)->Column#14, funcs:firstrow(inlj_inner_multi_pattern.tbl_5.col_20)->inlj_inner_multi_pattern.tbl_5.col_20 └─HashJoin_22 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_5.col_22, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_24(Build) 10000.00 root data:TableFullScan_23 │ └─TableFullScan_23 10000.00 cop[tikv] table:tbl_5 keep order:false, stats:pseudo └─Selection_25(Probe) 7992.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Alice"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Alice"))), not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"))) └─TableReader_28 9990.00 root data:Selection_27 └─Selection_27 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_26 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_8 , tbl_4 ) */ weight_string( tbl_4.col_16 ) as r0 , make_set( 1 , tbl_4.col_16 , tbl_4.col_16 ) as r1 from tbl_8 right join tbl_4 on tbl_8.col_37 = tbl_4.col_16 where tbl_8.col_42 between 'WqvBAzNm0JM' and '%' and tbl_4.col_17 <> 'Bob' order by r0,r1; id estRows task access object operator info Sort_11 0.00 root Column#11, Column#12 └─Projection_13 0.00 root weight_string(inlj_inner_multi_pattern.tbl_4.col_16)->Column#11, make_set(1, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#12 └─HashJoin_16 0.00 root inner join, equal:[eq(Column#13, inlj_inner_multi_pattern.tbl_4.col_16)] ├─Projection_17(Build) 0.00 root cast(inlj_inner_multi_pattern.tbl_8.col_37, var_string(10))->Column#13 │ └─TableDual_18 0.00 root rows:0 └─Selection_19(Probe) 8000.00 root ne(inlj_inner_multi_pattern.tbl_4.col_17, "Bob") └─TableReader_21 10000.00 root data:TableFullScan_20 └─TableFullScan_20 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ bit_length( tbl_4.col_16 ) as r0 , strcmp( tbl_4.col_16 , tbl_4.col_16 ) as r1 from tbl_4 join tbl_10 on tbl_4.col_17 = tbl_10.col_52 where tbl_4.col_16 in ( 'Rt!%(' ,'EmWPH5cZQK' ); id estRows task access object operator info Projection_9 20.00 root bit_length(inlj_inner_multi_pattern.tbl_4.col_16)->Column#6, strcmp(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_16)->Column#7 └─HashJoin_11 20.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52)] ├─Selection_12(Build) 16.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) │ └─IndexLookUp_19 20.00 root │ ├─IndexRangeScan_16(Build) 20.00 cop[tikv] table:tbl_4, index:idx_5(col_16, col_17) range:["EmWPH","EmWPH"], ["Rt!%(","Rt!%("], keep order:false, stats:pseudo │ └─Selection_18(Probe) 20.00 cop[tikv] in(inlj_inner_multi_pattern.tbl_4.col_16, "Rt!%(", "EmWPH5cZQK") │ └─TableRowIDScan_17 20.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─TableReader_21(Probe) 10000.00 root data:TableFullScan_20 └─TableFullScan_20 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ tbl_4.col_16 as r0 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_4.col_17 in ( 'David' ,'Bob' ,'Charlie' ,'Charlie' ) ) and not( tbl_10.col_52 between '' and 't文髻=CXo檽睙F=团4鴶)瘃观' ); id estRows task access object operator info HashJoin_11 8320.83 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_14(Build) 6656.67 root data:Selection_13 │ └─Selection_13 6656.67 cop[tikv] or(lt(inlj_inner_multi_pattern.tbl_10.col_52, ""), gt(inlj_inner_multi_pattern.tbl_10.col_52, "t文髻=CXo檽睙F=团4鴶)瘃观")) │ └─TableFullScan_12 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_15(Probe) 7992.00 root not(in(inlj_inner_multi_pattern.tbl_4.col_17, "David", "Bob", "Charlie", "Charlie")) └─TableReader_18 9990.00 root data:Selection_17 └─Selection_17 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_16 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_2 ) */ bit_or( tbl_2.col_7 ) as r0 , count( distinct tbl_9.col_49 ) as r1 , tbl_9.col_50 as r2 , ltrim( tbl_2.col_7 ) as r3 from tbl_9 right join tbl_2 on tbl_9.col_47 = tbl_2.col_7 where tbl_9.col_48 between 'David' and 'Bob' and not( tbl_9.col_48 between 'Bob' and 'Charlie' ); id estRows task access object operator info Projection_11 1.00 root Column#12, Column#13, inlj_inner_multi_pattern.tbl_9.col_50, ltrim(inlj_inner_multi_pattern.tbl_2.col_7)->Column#14 └─HashAgg_12 1.00 root funcs:bit_or(Column#18)->Column#12, funcs:count(distinct Column#19)->Column#13, funcs:firstrow(Column#20)->inlj_inner_multi_pattern.tbl_9.col_50, funcs:firstrow(Column#21)->inlj_inner_multi_pattern.tbl_2.col_7 └─Projection_26 10000.00 root cast(inlj_inner_multi_pattern.tbl_2.col_7, bigint(255) BINARY)->Column#18, inlj_inner_multi_pattern.tbl_9.col_49, inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_2.col_7 └─HashJoin_15 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_47, Column#16)] ├─Projection_20(Build) 10000.00 root inlj_inner_multi_pattern.tbl_2.col_7, cast(inlj_inner_multi_pattern.tbl_2.col_7, datetime(6) BINARY)->Column#16 │ └─TableReader_22 10000.00 root data:TableFullScan_21 │ └─TableFullScan_21 10000.00 cop[tikv] table:tbl_2 keep order:false, stats:pseudo └─Selection_17(Probe) 8000.00 root ge(inlj_inner_multi_pattern.tbl_9.col_48, "David"), le(inlj_inner_multi_pattern.tbl_9.col_48, "Bob"), not(and(ge(inlj_inner_multi_pattern.tbl_9.col_48, "Bob"), le(inlj_inner_multi_pattern.tbl_9.col_48, "Charlie"))) └─TableReader_19 10000.00 root data:TableFullScan_18 └─TableFullScan_18 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_3 , tbl_4 ) */ max( distinct tbl_3.col_10 ) as r0 , approx_count_distinct( tbl_3.col_13 ) as r1 , tbl_4.col_16 as r2 , right( tbl_3.col_14 , 7 ) as r3 from tbl_3 join tbl_4 on tbl_3.col_8 = tbl_4.col_16 where not( IsNull( tbl_4.col_17 ) ) and tbl_4.col_17 > 'Charlie' group by tbl_3.col_10,tbl_3.col_13 order by r0,r1,r2,r3; id estRows task access object operator info Sort_11 8000.00 root Column#13, Column#14, inlj_inner_multi_pattern.tbl_4.col_16, Column#15 └─Projection_13 8000.00 root Column#13, Column#14, inlj_inner_multi_pattern.tbl_4.col_16, right(inlj_inner_multi_pattern.tbl_3.col_14, 7)->Column#15 └─HashAgg_14 8000.00 root group by:inlj_inner_multi_pattern.tbl_3.col_10, inlj_inner_multi_pattern.tbl_3.col_13, funcs:max(distinct inlj_inner_multi_pattern.tbl_3.col_10)->Column#13, funcs:approx_count_distinct(inlj_inner_multi_pattern.tbl_3.col_13)->Column#14, funcs:firstrow(inlj_inner_multi_pattern.tbl_3.col_14)->inlj_inner_multi_pattern.tbl_3.col_14, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_15 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_3.col_8, inlj_inner_multi_pattern.tbl_4.col_16)] ├─Selection_19(Build) 7992.00 root gt(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"), not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) │ └─TableReader_22 9990.00 root data:Selection_21 │ └─Selection_21 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─TableFullScan_20 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─TableReader_18(Probe) 10000.00 root data:TableFullScan_17 └─TableFullScan_17 10000.00 cop[tikv] table:tbl_3 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ tbl_4.col_17 as r0 , min( tbl_9.col_46 ) as r1 , repeat( tbl_4.col_16 , tbl_4.col_16 ) as r2 , tbl_9.col_44 as r3 from tbl_9 join tbl_4 on tbl_9.col_44 = tbl_4.col_16 where IsNull( tbl_9.col_48 ) order by r0,r1,r2,r3 limit 59; id estRows task access object operator info Projection_14 1.00 root inlj_inner_multi_pattern.tbl_4.col_17, Column#14, repeat(inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY))->Column#15, inlj_inner_multi_pattern.tbl_9.col_44 └─Projection_36 1.00 root Column#14, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─TopN_17 1.00 root inlj_inner_multi_pattern.tbl_4.col_17, Column#14, Column#18, inlj_inner_multi_pattern.tbl_9.col_44, offset:0, count:59 └─Projection_37 1.00 root Column#14, inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, repeat(inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY))->Column#18 └─HashAgg_19 1.00 root funcs:min(inlj_inner_multi_pattern.tbl_9.col_46)->Column#14, funcs:firstrow(inlj_inner_multi_pattern.tbl_9.col_44)->inlj_inner_multi_pattern.tbl_9.col_44, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_17)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_21 10000.00 root inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─HashJoin_22 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_44)] ├─Selection_30(Build) 8000.00 root isnull(inlj_inner_multi_pattern.tbl_9.col_48) │ └─TableReader_32 10000.00 root data:TableFullScan_31 │ └─TableFullScan_31 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─TableReader_26(Probe) 9990.00 root data:Selection_25 └─Selection_25 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_24 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ tbl_10.col_52 as r0 , tbl_4.col_17 as r1 from tbl_4 join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where not( tbl_4.col_17 between 'Bob' and 'David' ) ; id estRows task access object operator info Projection_10 9990.00 root inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_11 9990.00 root inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52 └─HashJoin_13 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_15(Build) 10000.00 root data:TableFullScan_14 │ └─TableFullScan_14 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_16(Probe) 7992.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"), le(inlj_inner_multi_pattern.tbl_4.col_17, "David"))) └─TableReader_19 9990.00 root data:Selection_18 └─Selection_18 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_17 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_1 ) */ tbl_1.col_3 as r0 , tbl_9.col_47 as r1 , substr( tbl_9.col_46 , 5 ) as r2 , rpad( tbl_9.col_44 , 7 , tbl_9.col_44 ) as r3 from tbl_9 right join tbl_1 on tbl_9.col_47 = tbl_1.col_6 where not( tbl_9.col_48 between 'Charlie' and 'Charlie' ) order by r0,r1,r2,r3 limit 47; id estRows task access object operator info Projection_12 47.00 root inlj_inner_multi_pattern.tbl_1.col_3, inlj_inner_multi_pattern.tbl_9.col_47, substr(inlj_inner_multi_pattern.tbl_9.col_46, 5)->Column#18, rpad(inlj_inner_multi_pattern.tbl_9.col_44, 7, inlj_inner_multi_pattern.tbl_9.col_44)->Column#19 └─Projection_26 47.00 root inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_47, inlj_inner_multi_pattern.tbl_1.col_3 └─TopN_15 47.00 root inlj_inner_multi_pattern.tbl_1.col_3, inlj_inner_multi_pattern.tbl_9.col_47, Column#20, Column#21, offset:0, count:47 └─Projection_27 10000.00 root inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_47, inlj_inner_multi_pattern.tbl_1.col_3, substr(inlj_inner_multi_pattern.tbl_9.col_46, 5)->Column#20, rpad(inlj_inner_multi_pattern.tbl_9.col_44, 7, inlj_inner_multi_pattern.tbl_9.col_44)->Column#21 └─Projection_17 10000.00 root inlj_inner_multi_pattern.tbl_9.col_44, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_47, inlj_inner_multi_pattern.tbl_1.col_3 └─HashJoin_19 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_1.col_6, inlj_inner_multi_pattern.tbl_9.col_47)] ├─TableReader_21(Build) 10000.00 root data:TableFullScan_20 │ └─TableFullScan_20 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_22(Probe) 8000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_9.col_48, "Charlie"), le(inlj_inner_multi_pattern.tbl_9.col_48, "Charlie"))) └─TableReader_24 10000.00 root data:TableFullScan_23 └─TableFullScan_23 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ bit_xor( tbl_9.col_45 ) as r0 from tbl_9 right join tbl_4 on tbl_9.col_50 = tbl_4.col_16 where tbl_4.col_17 > 'Alice' and not( tbl_9.col_48 <> 'Bob' ) group by tbl_9.col_45 order by r0 limit 91; id estRows task access object operator info TopN_17 91.00 root Column#14, offset:0, count:91 └─HashAgg_22 6400.00 root group by:Column#17, funcs:bit_xor(Column#16)->Column#14 └─Projection_36 9990.00 root cast(inlj_inner_multi_pattern.tbl_9.col_45, bigint(22) BINARY)->Column#16, inlj_inner_multi_pattern.tbl_9.col_45 └─HashJoin_24 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_50)] ├─Selection_33(Build) 8000.00 root not(ne(inlj_inner_multi_pattern.tbl_9.col_48, "Bob")) │ └─TableReader_35 10000.00 root data:TableFullScan_34 │ └─TableFullScan_34 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_26(Probe) 7992.00 root gt(inlj_inner_multi_pattern.tbl_4.col_17, "Alice") └─TableReader_29 9990.00 root data:Selection_28 └─Selection_28 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_27 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ bit_xor( tbl_10.col_52 ) as r0 , var_samp( tbl_4.col_16 ) as r1 from tbl_4 join tbl_10 on tbl_10.col_52 = tbl_4.col_16 where IsNull( tbl_4.col_16 ) or not( IsNull( tbl_4.col_17 ) ) group by tbl_4.col_16,tbl_10.col_52 ; id estRows task access object operator info HashAgg_12 8000.00 root group by:Column#11, Column#12, funcs:bit_xor(Column#9)->Column#6, funcs:var_samp(Column#10)->Column#7 └─Projection_25 9990.00 root cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY)->Column#9, cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#10, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_13 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52 └─HashJoin_15 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_17(Build) 10000.00 root data:TableFullScan_16 │ └─TableFullScan_16 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_18(Probe) 7992.00 root or(isnull(inlj_inner_multi_pattern.tbl_4.col_16), not(isnull(inlj_inner_multi_pattern.tbl_4.col_17))) └─TableReader_21 9990.00 root data:Selection_20 └─Selection_20 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_19 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_8 ) */ ord( tbl_8.col_42 ) as r0 , tbl_4.col_17 as r1 from tbl_8 left join tbl_4 on tbl_4.col_16 = tbl_8.col_37 where tbl_4.col_17 != 'Alice' and not( tbl_4.col_16 between 'Rt!%(' and 'V)RNMqDjZ7rbxX' ) ; id estRows task access object operator info Projection_10 5325.33 root ord(inlj_inner_multi_pattern.tbl_8.col_42)->Column#11, inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_11 5325.33 root inlj_inner_multi_pattern.tbl_8.col_42, inlj_inner_multi_pattern.tbl_4.col_17 └─HashJoin_13 5325.33 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#12)] ├─Selection_14(Build) 4260.27 root ne(inlj_inner_multi_pattern.tbl_4.col_17, "Alice") │ └─TableReader_17 5325.33 root data:Selection_16 │ └─Selection_16 5325.33 cop[tikv] or(lt(inlj_inner_multi_pattern.tbl_4.col_16, "Rt!%("), gt(inlj_inner_multi_pattern.tbl_4.col_16, "V)RNMqDjZ7rbxX")) │ └─TableFullScan_15 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─Projection_22(Probe) 10000.00 root inlj_inner_multi_pattern.tbl_8.col_42, cast(inlj_inner_multi_pattern.tbl_8.col_37, var_string(10))->Column#12 └─TableReader_24 10000.00 root data:TableFullScan_23 └─TableFullScan_23 10000.00 cop[tikv] table:tbl_8 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ tbl_10.col_52 as r0 , char( tbl_10.col_52 , tbl_10.col_52 using gbk ) as r1 , avg( distinct tbl_4.col_16 ) as r2 , min( tbl_10.col_52 ) as r3 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where tbl_4.col_17 in ( 'Bob' ,'David' ,'Charlie' ) ; id estRows task access object operator info Projection_10 1.00 root inlj_inner_multi_pattern.tbl_10.col_52, char_func(cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY), cast(inlj_inner_multi_pattern.tbl_10.col_52, bigint(255) BINARY), gbk)->Column#8, Column#6, Column#7 └─HashAgg_11 1.00 root funcs:avg(distinct Column#11)->Column#6, funcs:min(Column#12)->Column#7, funcs:firstrow(Column#13)->inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_26 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_16, double BINARY)->Column#11, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_10.col_52 └─HashJoin_14 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_16(Build) 10000.00 root data:TableFullScan_15 │ └─TableFullScan_15 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_17(Probe) 7992.00 root in(inlj_inner_multi_pattern.tbl_4.col_17, "Bob", "David", "Charlie") └─TableReader_20 9990.00 root data:Selection_19 └─Selection_19 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_18 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_3 ) */ sum( tbl_3.col_9 ) as r0 , weight_string( tbl_3.col_10 ) as r1 , avg( distinct tbl_3.col_8 ) as r2 , bit_or( tbl_4.col_16 ) as r3 , char( tbl_4.col_16 , tbl_4.col_17 using gbk ) as r4 from tbl_3 join tbl_4 on tbl_3.col_8 = tbl_4.col_16 where tbl_4.col_16 between 'Rt!%(' and 'EmWPH5cZQK' and tbl_4.col_17 between 'David' and 'Charlie' ; id estRows task access object operator info Projection_11 1.00 root Column#13, weight_string(inlj_inner_multi_pattern.tbl_3.col_10)->Column#16, Column#14, Column#15, char_func(cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY), cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), gbk)->Column#17 └─StreamAgg_13 1.00 root funcs:sum(Column#20)->Column#13, funcs:avg(distinct Column#21)->Column#14, funcs:bit_or(Column#22)->Column#15, funcs:firstrow(Column#23)->inlj_inner_multi_pattern.tbl_3.col_10, funcs:firstrow(Column#24)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(Column#25)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_21 0.00 root cast(inlj_inner_multi_pattern.tbl_3.col_9, double BINARY)->Column#20, cast(inlj_inner_multi_pattern.tbl_3.col_8, double BINARY)->Column#21, cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY)->Column#22, inlj_inner_multi_pattern.tbl_3.col_10, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_14 0.00 root inlj_inner_multi_pattern.tbl_3.col_8, inlj_inner_multi_pattern.tbl_3.col_9, inlj_inner_multi_pattern.tbl_3.col_10, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─HashJoin_16 0.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_3.col_8)] ├─Selection_17(Build) 0.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie") │ └─TableDual_18 0.00 root rows:0 └─TableReader_20(Probe) 10000.00 root data:TableFullScan_19 └─TableFullScan_19 10000.00 cop[tikv] table:tbl_3 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_5 ) */ max( tbl_4.col_16 ) as r0 , right( tbl_4.col_16 , 4 ) as r1 , bit_and( tbl_5.col_21 ) as r2 , tbl_5.col_21 as r3 from tbl_5 left join tbl_4 on tbl_4.col_16 = tbl_5.col_18 where not( IsNull( tbl_4.col_17 ) ) ; id estRows task access object operator info Projection_9 1.00 root Column#14, right(inlj_inner_multi_pattern.tbl_4.col_16, 4)->Column#16, Column#15, inlj_inner_multi_pattern.tbl_5.col_21 └─HashAgg_10 1.00 root funcs:max(inlj_inner_multi_pattern.tbl_4.col_16)->Column#14, funcs:bit_and(inlj_inner_multi_pattern.tbl_5.col_21)->Column#15, funcs:firstrow(inlj_inner_multi_pattern.tbl_5.col_21)->inlj_inner_multi_pattern.tbl_5.col_21, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_13 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_5.col_18, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_16(Build) 9990.00 root data:Selection_15 │ └─Selection_15 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_5.col_18)) │ └─TableFullScan_14 10000.00 cop[tikv] table:tbl_5 keep order:false, stats:pseudo └─Selection_17(Probe) 7992.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─TableReader_20 9990.00 root data:Selection_19 └─Selection_19 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_18 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ bit_and( tbl_4.col_16 ) as r0 , tbl_4.col_17 as r1 from tbl_9 left join tbl_4 on tbl_4.col_16 = tbl_9.col_50 where tbl_4.col_17 between 'David' and 'Bob' group by tbl_4.col_16 order by r0,r1 limit 66; id estRows task access object operator info TopN_15 66.00 root Column#14, inlj_inner_multi_pattern.tbl_4.col_17, offset:0, count:66 └─HashAgg_20 6393.60 root group by:Column#18, funcs:bit_and(Column#16)->Column#14, funcs:firstrow(Column#17)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_35 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY)->Column#16, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_23 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_25(Build) 10000.00 root data:TableFullScan_24 │ └─TableFullScan_24 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_26(Probe) 7992.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob") └─TableReader_29 9990.00 root data:Selection_28 └─Selection_28 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_27 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_5 ) */ tbl_5.col_23 as r0 , lcase( tbl_4.col_16 ) as r1 , bit_or( tbl_4.col_16 ) as r2 , tbl_5.col_25 as r3 from tbl_4 join tbl_5 on tbl_4.col_16 = tbl_5.col_18 where tbl_4.col_16 in ( select col_9 from tbl_3 where tbl_4.col_17 >= 'Charlie' ) and tbl_5.col_18 in ( select col_5 from tbl_1 where not( tbl_5.col_25 in ( '1988-10-26' ) ) ) group by tbl_4.col_16 ; id estRows task access object operator info Projection_20 4091.90 root inlj_inner_multi_pattern.tbl_5.col_23, lcase(inlj_inner_multi_pattern.tbl_4.col_16)->Column#31, Column#30, inlj_inner_multi_pattern.tbl_5.col_25 └─HashAgg_21 4091.90 root group by:Column#44, funcs:bit_or(Column#40)->Column#30, funcs:firstrow(Column#41)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(Column#42)->inlj_inner_multi_pattern.tbl_5.col_23, funcs:firstrow(Column#43)->inlj_inner_multi_pattern.tbl_5.col_25 └─Projection_49 5320.01 root cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY)->Column#40, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_5.col_23, inlj_inner_multi_pattern.tbl_5.col_25, inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_23 5320.01 root semi join, equal:[eq(inlj_inner_multi_pattern.tbl_5.col_18, inlj_inner_multi_pattern.tbl_1.col_5)] ├─IndexReader_48(Build) 10000.00 root index:IndexFullScan_47 │ └─IndexFullScan_47 10000.00 cop[tikv] table:tbl_1, index:PRIMARY(col_2, col_5) keep order:false, stats:pseudo └─HashJoin_24(Probe) 6650.01 root semi join, equal:[eq(Column#33, inlj_inner_multi_pattern.tbl_3.col_9)] ├─TableReader_44(Build) 10000.00 root data:TableFullScan_43 │ └─TableFullScan_43 10000.00 cop[tikv] table:tbl_3 keep order:false, stats:pseudo └─Projection_25(Probe) 8312.51 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_5.col_18, inlj_inner_multi_pattern.tbl_5.col_23, inlj_inner_multi_pattern.tbl_5.col_25, cast(inlj_inner_multi_pattern.tbl_4.col_16, datetime(6) BINARY)->Column#33 └─Projection_26 8312.51 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_5.col_18, inlj_inner_multi_pattern.tbl_5.col_23, inlj_inner_multi_pattern.tbl_5.col_25 └─HashJoin_28 8312.51 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_5.col_18, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_31(Build) 6650.01 root data:Selection_30 │ └─Selection_30 6650.01 cop[tikv] ne(inlj_inner_multi_pattern.tbl_5.col_25, 1988-10-26 00:00:00.000000), not(isnull(inlj_inner_multi_pattern.tbl_5.col_18)) │ └─TableFullScan_29 10000.00 cop[tikv] table:tbl_5 keep order:false, stats:pseudo └─Selection_36(Probe) 7992.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie") └─TableReader_39 9990.00 root data:Selection_38 └─Selection_38 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_37 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ right( tbl_4.col_16 , 9 ) as r0 , repeat( tbl_9.col_50 , tbl_9.col_45 ) as r1 , unhex( tbl_4.col_16 ) as r2 , sum( tbl_4.col_17 ) as r3 from tbl_9 join tbl_4 on tbl_4.col_16 = tbl_9.col_46 where not( IsNull( tbl_9.col_45 ) ) and not( tbl_4.col_17 in ( 'David' ,'Bob' ,'Alice' ,'Alice' ) ) group by tbl_4.col_17 order by r0,r1,r2,r3; id estRows task access object operator info Sort_11 6393.60 root Column#15, Column#16, Column#17, Column#14 └─Projection_13 6393.60 root right(inlj_inner_multi_pattern.tbl_4.col_16, 9)->Column#15, repeat(inlj_inner_multi_pattern.tbl_9.col_50, cast(inlj_inner_multi_pattern.tbl_9.col_45, bigint(22) BINARY))->Column#16, unhex(inlj_inner_multi_pattern.tbl_4.col_16)->Column#17, Column#14 └─HashAgg_14 6393.60 root group by:Column#26, funcs:sum(Column#22)->Column#14, funcs:firstrow(Column#23)->inlj_inner_multi_pattern.tbl_9.col_45, funcs:firstrow(Column#24)->inlj_inner_multi_pattern.tbl_9.col_50, funcs:firstrow(Column#25)->inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_27 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#22, inlj_inner_multi_pattern.tbl_9.col_45, inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─HashJoin_16 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_19(Build) 9990.00 root data:Selection_18 │ └─Selection_18 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_9.col_45)) │ └─TableFullScan_17 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_20(Probe) 7992.00 root not(in(inlj_inner_multi_pattern.tbl_4.col_17, "David", "Bob", "Alice", "Alice")) └─TableReader_23 9990.00 root data:Selection_22 └─Selection_22 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_21 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_3 ) */ var_samp( tbl_4.col_17 ) as r0 , substring( tbl_4.col_16 , 9 ) as r1 , bin( tbl_4.col_17 ) as r2 , sum( distinct tbl_3.col_11 ) as r3 from tbl_4 right join tbl_3 on tbl_4.col_16 = tbl_3.col_8 where tbl_4.col_16 between 'EmWPH5cZQK' and 'Rt!%(' or not( tbl_4.col_17 between 'Charlie' and 'Bob' ) ; id estRows task access object operator info Projection_10 1.00 root Column#13, substring(inlj_inner_multi_pattern.tbl_4.col_16, 9)->Column#15, bin(cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY))->Column#16, Column#14 └─HashAgg_11 1.00 root funcs:var_samp(Column#20)->Column#13, funcs:sum(distinct Column#21)->Column#14, funcs:firstrow(Column#22)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(Column#23)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_28 9990.00 root cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#20, cast(inlj_inner_multi_pattern.tbl_3.col_11, double BINARY)->Column#21, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_13 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_3.col_11 └─HashJoin_15 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_3.col_8, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_17(Build) 10000.00 root data:TableFullScan_16 │ └─TableFullScan_16 10000.00 cop[tikv] table:tbl_3 keep order:false, stats:pseudo └─Selection_18(Probe) 7992.00 root or(and(ge(inlj_inner_multi_pattern.tbl_4.col_16, "EmWPH5cZQK"), le(inlj_inner_multi_pattern.tbl_4.col_16, "Rt!%(")), not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob")))) └─TableReader_21 9990.00 root data:Selection_20 └─Selection_20 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_19 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ insert( tbl_10.col_52 , 1 , 2 , tbl_10.col_52 ) as r0 , stddev_pop( tbl_10.col_52 ) as r1 , reverse( tbl_10.col_52 ) as r2 , max( distinct tbl_4.col_16 ) as r3 from tbl_4 join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where tbl_4.col_17 between 'Charlie' and 'Bob' ; id estRows task access object operator info Projection_11 1.00 root insert_func(inlj_inner_multi_pattern.tbl_10.col_52, 1, 2, inlj_inner_multi_pattern.tbl_10.col_52)->Column#8, Column#6, reverse(inlj_inner_multi_pattern.tbl_10.col_52)->Column#9, Column#7 └─HashAgg_12 1.00 root funcs:stddev_pop(Column#13)->Column#6, funcs:max(distinct Column#14)->Column#7, funcs:firstrow(Column#15)->inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_29 9990.00 root cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#13, inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52 └─Projection_14 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52 └─HashJoin_16 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_18(Build) 10000.00 root data:TableFullScan_17 │ └─TableFullScan_17 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_19(Probe) 7992.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob") └─TableReader_22 9990.00 root data:Selection_21 └─Selection_21 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_20 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_5 ) */ count( tbl_4.col_16 ) as r0 , bit_and( tbl_4.col_17 ) as r1 , sum( tbl_5.col_21 ) as r2 , avg( distinct tbl_5.col_21 ) as r3 , var_pop( tbl_4.col_17 ) as r4 from tbl_5 left join tbl_4 on tbl_4.col_16 = tbl_5.col_18 where not( IsNull( tbl_4.col_17 ) ) order by r0,r1,r2,r3,r4 limit 33; id estRows task access object operator info TopN_15 1.00 root Column#14, Column#15, Column#16, Column#17, Column#18, offset:0, count:33 └─HashAgg_20 1.00 root funcs:count(Column#20)->Column#14, funcs:bit_and(Column#21)->Column#15, funcs:sum(Column#22)->Column#16, funcs:avg(distinct Column#23)->Column#17, funcs:var_pop(Column#24)->Column#18 └─Projection_36 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY)->Column#21, cast(inlj_inner_multi_pattern.tbl_5.col_21, decimal(20,0) UNSIGNED BINARY)->Column#22, cast(inlj_inner_multi_pattern.tbl_5.col_21, decimal(20,0) UNSIGNED BINARY)->Column#23, cast(inlj_inner_multi_pattern.tbl_4.col_17, double BINARY)->Column#24 └─HashJoin_23 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_5.col_18, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_26(Build) 9990.00 root data:Selection_25 │ └─Selection_25 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_5.col_18)) │ └─TableFullScan_24 10000.00 cop[tikv] table:tbl_5 keep order:false, stats:pseudo └─Selection_27(Probe) 7992.00 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) └─TableReader_30 9990.00 root data:Selection_29 └─Selection_29 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_28 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_8 ) */ tbl_8.col_40 as r0 , unhex( tbl_9.col_50 ) as r1 , unhex( tbl_8.col_39 ) as r2 , var_samp( tbl_8.col_41 ) as r3 , insert( tbl_8.col_39 , 0 , 0 , tbl_8.col_42 ) as r4 from tbl_8 left join tbl_9 on tbl_8.col_42 = tbl_9.col_44 where tbl_9.col_48 between 'Bob' and 'Alice' and not( IsNull( tbl_8.col_38 ) ) group by tbl_8.col_41 order by r0,r1,r2,r3,r4 limit 37; id estRows task access object operator info Projection_12 37.00 root inlj_inner_multi_pattern.tbl_8.col_40, unhex(inlj_inner_multi_pattern.tbl_9.col_50)->Column#19, unhex(inlj_inner_multi_pattern.tbl_8.col_39)->Column#20, Column#18, insert_func(inlj_inner_multi_pattern.tbl_8.col_39, 0, 0, inlj_inner_multi_pattern.tbl_8.col_42)->Column#21 └─Projection_29 37.00 root Column#18, inlj_inner_multi_pattern.tbl_8.col_39, inlj_inner_multi_pattern.tbl_8.col_40, inlj_inner_multi_pattern.tbl_8.col_42, inlj_inner_multi_pattern.tbl_9.col_50 └─TopN_15 37.00 root inlj_inner_multi_pattern.tbl_8.col_40, Column#31, Column#32, Column#18, Column#33, offset:0, count:37 └─Projection_30 8000.00 root Column#18, inlj_inner_multi_pattern.tbl_8.col_39, inlj_inner_multi_pattern.tbl_8.col_40, inlj_inner_multi_pattern.tbl_8.col_42, inlj_inner_multi_pattern.tbl_9.col_50, unhex(inlj_inner_multi_pattern.tbl_9.col_50)->Column#31, unhex(inlj_inner_multi_pattern.tbl_8.col_39)->Column#32, insert_func(inlj_inner_multi_pattern.tbl_8.col_39, 0, 0, inlj_inner_multi_pattern.tbl_8.col_42)->Column#33 └─HashAgg_17 8000.00 root group by:Column#30, funcs:var_samp(Column#25)->Column#18, funcs:firstrow(Column#26)->inlj_inner_multi_pattern.tbl_8.col_39, funcs:firstrow(Column#27)->inlj_inner_multi_pattern.tbl_8.col_40, funcs:firstrow(Column#28)->inlj_inner_multi_pattern.tbl_8.col_42, funcs:firstrow(Column#29)->inlj_inner_multi_pattern.tbl_9.col_50 └─Projection_28 10000.00 root cast(inlj_inner_multi_pattern.tbl_8.col_41, double BINARY)->Column#25, inlj_inner_multi_pattern.tbl_8.col_39, inlj_inner_multi_pattern.tbl_8.col_40, inlj_inner_multi_pattern.tbl_8.col_42, inlj_inner_multi_pattern.tbl_9.col_50, inlj_inner_multi_pattern.tbl_8.col_41 └─HashJoin_19 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_8.col_42, inlj_inner_multi_pattern.tbl_9.col_44)] ├─Selection_23(Build) 8000.00 root ge(inlj_inner_multi_pattern.tbl_9.col_48, "Bob"), le(inlj_inner_multi_pattern.tbl_9.col_48, "Alice") │ └─TableReader_25 10000.00 root data:TableFullScan_24 │ └─TableFullScan_24 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─TableReader_22(Probe) 10000.00 root data:TableFullScan_21 └─TableFullScan_21 10000.00 cop[tikv] table:tbl_8 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_10 ) */ tbl_10.col_52 as r0 , char( tbl_4.col_16 , tbl_4.col_17 using gbk ) as r1 , tbl_4.col_16 as r2 from tbl_4 join tbl_10 on tbl_4.col_16 = tbl_10.col_52 where not( tbl_4.col_16 <= 'T1b_19DKgtgk=' ) and not( IsNull( tbl_4.col_17 ) ) ; id estRows task access object operator info Projection_9 3333.33 root inlj_inner_multi_pattern.tbl_10.col_52, char_func(cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY), cast(inlj_inner_multi_pattern.tbl_4.col_17, bigint(23) BINARY), gbk)->Column#6, inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_11 3333.33 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_10.col_52)] ├─Selection_12(Build) 2666.67 root not(isnull(inlj_inner_multi_pattern.tbl_4.col_17)) │ └─TableReader_15 3333.33 root data:Selection_14 │ └─Selection_14 3333.33 cop[tikv] gt(inlj_inner_multi_pattern.tbl_4.col_16, "T1b_19DKgtgk="), not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) │ └─TableFullScan_13 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo └─TableReader_21(Probe) 10000.00 root data:TableFullScan_20 └─TableFullScan_20 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_5 , tbl_9 ) */ tbl_5.col_26 as r0 , octet_length( tbl_9.col_46 ) as r1 , stddev_samp( tbl_5.col_21 ) as r2 , stddev_samp( tbl_5.col_21 ) as r3 , substr( tbl_5.col_24 , 4 ) as r4 from tbl_5 left join tbl_9 on tbl_5.col_22 = tbl_9.col_44 where not( tbl_9.col_48 between 'Bob' and 'Bob' ) and tbl_5.col_22 <> 'Bob' group by tbl_5.col_21 ; id estRows task access object operator info Projection_9 32.00 root inlj_inner_multi_pattern.tbl_5.col_26, octet_length(to_binary(inlj_inner_multi_pattern.tbl_9.col_46))->Column#22, Column#21, Column#21, substr(cast(inlj_inner_multi_pattern.tbl_5.col_24, var_string(20)), 4)->Column#23 └─HashAgg_10 32.00 root group by:Column#30, funcs:stddev_samp(Column#26)->Column#21, funcs:firstrow(Column#27)->inlj_inner_multi_pattern.tbl_5.col_24, funcs:firstrow(Column#28)->inlj_inner_multi_pattern.tbl_5.col_26, funcs:firstrow(Column#29)->inlj_inner_multi_pattern.tbl_9.col_46 └─Projection_19 50.00 root cast(inlj_inner_multi_pattern.tbl_5.col_21, double UNSIGNED BINARY)->Column#26, inlj_inner_multi_pattern.tbl_5.col_24, inlj_inner_multi_pattern.tbl_5.col_26, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_5.col_21 └─HashJoin_12 50.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_5.col_22, inlj_inner_multi_pattern.tbl_9.col_44)] ├─TableReader_15(Build) 40.00 root data:Selection_14 │ └─Selection_14 40.00 cop[tikv] ne(inlj_inner_multi_pattern.tbl_5.col_22, "Bob") │ └─TableFullScan_13 10000.00 cop[tikv] table:tbl_5 keep order:false, stats:pseudo └─Selection_16(Probe) 8000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_9.col_48, "Bob"), le(inlj_inner_multi_pattern.tbl_9.col_48, "Bob"))) └─TableReader_18 10000.00 root data:TableFullScan_17 └─TableFullScan_17 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_1 ) */ tbl_4.col_17 as r0 , repeat( tbl_4.col_16 , tbl_4.col_16 ) as r1 , tbl_4.col_17 as r2 , repeat( tbl_4.col_16 , tbl_4.col_16 ) as r3 , approx_count_distinct( tbl_4.col_16 ) as r4 from tbl_4 join tbl_1 on tbl_1.col_4 = tbl_4.col_16 where not( tbl_4.col_17 between 'Bob' and 'David' ) group by tbl_4.col_16 order by r0,r1,r2,r3,r4; id estRows task access object operator info Sort_13 6400.00 root inlj_inner_multi_pattern.tbl_4.col_17, Column#12, Column#13, Column#11 └─Projection_15 6400.00 root inlj_inner_multi_pattern.tbl_4.col_17, repeat(inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY))->Column#12, inlj_inner_multi_pattern.tbl_4.col_17, repeat(inlj_inner_multi_pattern.tbl_4.col_16, cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY))->Column#13, Column#11 └─HashAgg_16 6400.00 root group by:inlj_inner_multi_pattern.tbl_4.col_16, funcs:approx_count_distinct(inlj_inner_multi_pattern.tbl_4.col_16)->Column#11, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_16)->inlj_inner_multi_pattern.tbl_4.col_16, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_17)->inlj_inner_multi_pattern.tbl_4.col_17 └─HashJoin_19 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#16)] ├─Projection_24(Build) 10000.00 root cast(inlj_inner_multi_pattern.tbl_1.col_4, var_string(10))->Column#16 │ └─TableReader_26 10000.00 root data:TableFullScan_25 │ └─TableFullScan_25 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_21(Probe) 8000.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"), le(inlj_inner_multi_pattern.tbl_4.col_17, "David"))) └─TableReader_23 10000.00 root data:TableFullScan_22 └─TableFullScan_22 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ approx_percentile( tbl_10.col_52 , 17 ) as r0 , tbl_4.col_17 as r1 from tbl_4 right join tbl_10 on tbl_10.col_52 = tbl_4.col_16 where tbl_4.col_17 in ( 'Alice' ,'David' ) group by tbl_10.col_52 ; id estRows task access object operator info HashAgg_11 8000.00 root group by:inlj_inner_multi_pattern.tbl_10.col_52, funcs:approx_percentile(inlj_inner_multi_pattern.tbl_10.col_52, 17)->Column#6, funcs:firstrow(inlj_inner_multi_pattern.tbl_4.col_17)->inlj_inner_multi_pattern.tbl_4.col_17 └─Projection_12 9990.00 root inlj_inner_multi_pattern.tbl_4.col_17, inlj_inner_multi_pattern.tbl_10.col_52 └─HashJoin_14 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_16(Build) 10000.00 root data:TableFullScan_15 │ └─TableFullScan_15 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_17(Probe) 7992.00 root in(inlj_inner_multi_pattern.tbl_4.col_17, "Alice", "David") └─TableReader_20 9990.00 root data:Selection_19 └─Selection_19 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_18 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_8 ) */ group_concat( tbl_4.col_16 order by tbl_4.col_16 ) as r0 from tbl_4 join tbl_8 on tbl_4.col_16 = tbl_8.col_37 where tbl_4.col_17 in ( 'David' ,'Charlie' ,'Alice' ) ; id estRows task access object operator info HashAgg_13 1.00 root funcs:group_concat(inlj_inner_multi_pattern.tbl_4.col_16 order by inlj_inner_multi_pattern.tbl_4.col_16 separator ",")->Column#11 └─HashJoin_16 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_4.col_16, Column#12)] ├─Projection_21(Build) 10000.00 root cast(inlj_inner_multi_pattern.tbl_8.col_37, var_string(10))->Column#12 │ └─TableReader_23 10000.00 root data:TableFullScan_22 │ └─TableFullScan_22 10000.00 cop[tikv] table:tbl_8 keep order:false, stats:pseudo └─Selection_18(Probe) 8000.00 root in(inlj_inner_multi_pattern.tbl_4.col_17, "David", "Charlie", "Alice") └─TableReader_20 10000.00 root data:TableFullScan_19 └─TableFullScan_19 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_10 , tbl_4 ) */ substr( tbl_4.col_16 , 4 ) as r0 , character_length( tbl_4.col_16 ) as r1 , tbl_10.col_52 as r2 , substr( tbl_10.col_52 , 3 ) as r3 , var_samp( tbl_10.col_52 ) as r4 from tbl_10 join tbl_4 on tbl_10.col_52 = tbl_4.col_16 where not( tbl_4.col_17 between 'Charlie' and 'Bob' ) and not( IsNull( tbl_10.col_52 ) ) order by r0,r1,r2,r3,r4 limit 46; id estRows task access object operator info Projection_13 1.00 root substr(inlj_inner_multi_pattern.tbl_4.col_16, 4)->Column#7, character_length(inlj_inner_multi_pattern.tbl_4.col_16)->Column#8, inlj_inner_multi_pattern.tbl_10.col_52, substr(inlj_inner_multi_pattern.tbl_10.col_52, 3)->Column#9, Column#6 └─Projection_34 1.00 root Column#6, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16 └─TopN_16 1.00 root Column#17, Column#18, inlj_inner_multi_pattern.tbl_10.col_52, Column#19, Column#6, offset:0, count:46 └─Projection_35 1.00 root Column#6, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16, substr(inlj_inner_multi_pattern.tbl_4.col_16, 4)->Column#17, character_length(inlj_inner_multi_pattern.tbl_4.col_16)->Column#18, substr(inlj_inner_multi_pattern.tbl_10.col_52, 3)->Column#19 └─HashAgg_18 1.00 root funcs:var_samp(Column#14)->Column#6, funcs:firstrow(Column#15)->inlj_inner_multi_pattern.tbl_10.col_52, funcs:firstrow(Column#16)->inlj_inner_multi_pattern.tbl_4.col_16 └─Projection_33 9990.00 root cast(inlj_inner_multi_pattern.tbl_10.col_52, double BINARY)->Column#14, inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16 └─HashJoin_21 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_10.col_52, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_23(Build) 10000.00 root data:TableFullScan_22 │ └─TableFullScan_22 10000.00 cop[tikv] table:tbl_10 keep order:false, stats:pseudo └─Selection_24(Probe) 7992.00 root not(and(ge(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Bob"))) └─TableReader_27 9990.00 root data:Selection_26 └─Selection_26 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_25 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_4 , tbl_1 ) */ tbl_1.col_1 as r0 , field( tbl_1.col_5 , tbl_1.col_5 , tbl_1.col_1 ) as r1 , insert( tbl_4.col_16 , 1 , 2 , tbl_4.col_16 ) as r2 from tbl_4 right join tbl_1 on tbl_4.col_16 = tbl_1.col_5 where not( tbl_4.col_17 > 'Bob' ) order by r0,r1,r2 limit 34; id estRows task access object operator info Projection_12 34.00 root inlj_inner_multi_pattern.tbl_1.col_1, field(to_binary(inlj_inner_multi_pattern.tbl_1.col_5), to_binary(inlj_inner_multi_pattern.tbl_1.col_5), inlj_inner_multi_pattern.tbl_1.col_1)->Column#11, insert_func(inlj_inner_multi_pattern.tbl_4.col_16, 1, 2, inlj_inner_multi_pattern.tbl_4.col_16)->Column#12 └─Projection_30 34.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_5 └─TopN_15 34.00 root inlj_inner_multi_pattern.tbl_1.col_1, Column#14, Column#15, offset:0, count:34 └─Projection_31 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_5, field(to_binary(inlj_inner_multi_pattern.tbl_1.col_5), to_binary(inlj_inner_multi_pattern.tbl_1.col_5), inlj_inner_multi_pattern.tbl_1.col_1)->Column#14, insert_func(inlj_inner_multi_pattern.tbl_4.col_16, 1, 2, inlj_inner_multi_pattern.tbl_4.col_16)->Column#15 └─Projection_17 9990.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_1.col_1, inlj_inner_multi_pattern.tbl_1.col_5 └─HashJoin_19 9990.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_1.col_5, inlj_inner_multi_pattern.tbl_4.col_16)] ├─TableReader_21(Build) 10000.00 root data:TableFullScan_20 │ └─TableFullScan_20 10000.00 cop[tikv] table:tbl_1 keep order:false, stats:pseudo └─Selection_22(Probe) 7992.00 root not(gt(inlj_inner_multi_pattern.tbl_4.col_17, "Bob")) └─TableReader_25 9990.00 root data:Selection_24 └─Selection_24 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_23 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_6 ) */ rtrim( tbl_9.col_44 ) as r0 , tbl_6.col_29 as r1 , count( tbl_6.col_29 ) as r2 , length( tbl_6.col_31 ) as r3 , tbl_6.col_34 as r4 from tbl_9 right join tbl_6 on tbl_9.col_47 = tbl_6.col_35 where tbl_9.col_48 between 'Charlie' and 'Alice' ; id estRows task access object operator info Projection_11 1.00 root rtrim(inlj_inner_multi_pattern.tbl_9.col_44)->Column#22, inlj_inner_multi_pattern.tbl_6.col_29, Column#21, length(inlj_inner_multi_pattern.tbl_6.col_31)->Column#23, inlj_inner_multi_pattern.tbl_6.col_34 └─HashAgg_12 1.00 root funcs:count(inlj_inner_multi_pattern.tbl_6.col_29)->Column#21, funcs:firstrow(inlj_inner_multi_pattern.tbl_9.col_44)->inlj_inner_multi_pattern.tbl_9.col_44, funcs:firstrow(inlj_inner_multi_pattern.tbl_6.col_29)->inlj_inner_multi_pattern.tbl_6.col_29, funcs:firstrow(inlj_inner_multi_pattern.tbl_6.col_31)->inlj_inner_multi_pattern.tbl_6.col_31, funcs:firstrow(inlj_inner_multi_pattern.tbl_6.col_34)->inlj_inner_multi_pattern.tbl_6.col_34 └─HashJoin_16 10000.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_47, Column#26)] ├─Selection_17(Build) 8000.00 root ge(inlj_inner_multi_pattern.tbl_9.col_48, "Charlie"), le(inlj_inner_multi_pattern.tbl_9.col_48, "Alice") │ └─TableReader_19 10000.00 root data:TableFullScan_18 │ └─TableFullScan_18 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Projection_20(Probe) 10000.00 root inlj_inner_multi_pattern.tbl_6.col_29, inlj_inner_multi_pattern.tbl_6.col_31, inlj_inner_multi_pattern.tbl_6.col_34, cast(inlj_inner_multi_pattern.tbl_6.col_35, datetime(6) BINARY)->Column#26 └─TableReader_22 10000.00 root data:TableFullScan_21 └─TableFullScan_21 10000.00 cop[tikv] table:tbl_6 keep order:false, stats:pseudo explain select /*+ inl_join( tbl_9 , tbl_4 ) */ make_set( 0 , tbl_9.col_46 , tbl_9.col_46 ) as r0 , var_samp( tbl_9.col_51 ) as r1 , bit_xor( tbl_4.col_16 ) as r2 from tbl_4 right join tbl_9 on tbl_9.col_48 = tbl_4.col_16 where tbl_9.col_50 in ( 'Yg)Fr(dZXB' ,'Yg)Fr(dZXB' ,'guc~Pu)YTt' ,'PQ' ) and tbl_4.col_17 between 'David' and 'Charlie' order by r0,r1,r2 limit 58; id estRows task access object operator info Projection_14 1.00 root make_set(0, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_46)->Column#16, Column#14, Column#15 └─Projection_39 1.00 root Column#14, Column#15, inlj_inner_multi_pattern.tbl_9.col_46 └─TopN_17 1.00 root Column#22, Column#14, Column#15, offset:0, count:58 └─Projection_40 1.00 root Column#14, Column#15, inlj_inner_multi_pattern.tbl_9.col_46, make_set(0, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_46)->Column#22 └─HashAgg_19 1.00 root funcs:var_samp(Column#19)->Column#14, funcs:bit_xor(Column#20)->Column#15, funcs:firstrow(Column#21)->inlj_inner_multi_pattern.tbl_9.col_46 └─Projection_38 30.00 root inlj_inner_multi_pattern.tbl_9.col_51, cast(inlj_inner_multi_pattern.tbl_4.col_16, bigint(65535) BINARY)->Column#20, inlj_inner_multi_pattern.tbl_9.col_46 └─Projection_21 30.00 root inlj_inner_multi_pattern.tbl_4.col_16, inlj_inner_multi_pattern.tbl_9.col_46, inlj_inner_multi_pattern.tbl_9.col_51 └─HashJoin_23 30.00 root inner join, equal:[eq(inlj_inner_multi_pattern.tbl_9.col_48, inlj_inner_multi_pattern.tbl_4.col_16)] ├─Selection_24(Build) 24.00 root not(isnull(inlj_inner_multi_pattern.tbl_9.col_48)) │ └─TableReader_27 30.00 root data:Selection_26 │ └─Selection_26 30.00 cop[tikv] in(inlj_inner_multi_pattern.tbl_9.col_50, "Yg)Fr(dZXB", "Yg)Fr(dZXB", "guc~Pu)YTt", "PQ") │ └─TableFullScan_25 10000.00 cop[tikv] table:tbl_9 keep order:false, stats:pseudo └─Selection_28(Probe) 7992.00 root ge(inlj_inner_multi_pattern.tbl_4.col_17, "David"), le(inlj_inner_multi_pattern.tbl_4.col_17, "Charlie") └─TableReader_31 9990.00 root data:Selection_30 └─Selection_30 9990.00 cop[tikv] not(isnull(inlj_inner_multi_pattern.tbl_4.col_16)) └─TableFullScan_29 10000.00 cop[tikv] table:tbl_4 keep order:false, stats:pseudo