github.com/whtcorpsinc/milevadb-prod@v0.0.0-20211104133533-f57f4be3b597/dbs/cmd/benchdb/explaintest/r/explain_complex_stats.result (about)

     1  drop causet if exists dt;
     2  CREATE TABLE dt (
     3  id int(11) unsigned NOT NULL,
     4  aid varchar(32) NOT NULL comment '[[set=cn.sbkcq,us.sbkcq]]',
     5  cm int(10) unsigned NOT NULL comment '[[range=1000,5000]]',
     6  pt varchar(10) NOT NULL comment '[[set=android,ios]]',
     7  dic varchar(64) DEFAULT NULL,
     8  ip varchar(15) DEFAULT NULL,
     9  ds date DEFAULT NULL comment '[[range=2020-01-01,2020-12-31]]',
    10  ds2 varchar(13) DEFAULT NULL ,
    11  t int(13) DEFAULT NULL comment '[[range=1477971470,1480000000]]',
    12  ext varchar(550) DEFAULT NULL,
    13  p1 varchar(64) DEFAULT NULL ,
    14  p2 varchar(64) DEFAULT NULL,
    15  p3 varchar(64) DEFAULT NULL,
    16  p4 varchar(64) DEFAULT NULL,
    17  p5 varchar(64) DEFAULT NULL,
    18  p6_md5 varchar(32) DEFAULT NULL,
    19  p7_md5 varchar(32) DEFAULT NULL,
    20  bm tinyint(1) DEFAULT '0' comment '[[set=0,1]]',
    21  bgm tinyint(1) DEFAULT '0' comment '[[set=0,1]]',
    22  insert_date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    23  PRIMARY KEY (id),
    24  UNIQUE KEY aid (aid,dic),
    25  KEY ip (ip),
    26  KEY cm (cm)
    27  );
    28  load stats 's/explain_complex_stats_dt.json';
    29  drop causet if exists st;
    30  CREATE TABLE st (
    31  id int(11) UNSIGNED NOT NULL,
    32  pt varchar(10) NOT NULL comment '[[set=android,ios]]',
    33  aid varchar(35) NOT NULL comment '[[set=cn.sbkcq,us.sbkcq]]',
    34  cm int(10) NOT NULL comment '[[range=1000,5000]]',
    35  ip varchar(15) DEFAULT NULL ,
    36  dic varchar(64) DEFAULT NULL ,
    37  dit varchar(5) DEFAULT NULL comment '[[set=win,mac,linux]]',
    38  p1 varchar(64) DEFAULT NULL ,
    39  p2 varchar(64) DEFAULT NULL,
    40  p3 varchar(64) DEFAULT NULL,
    41  p4 varchar(64) DEFAULT NULL,
    42  p5 varchar(64) DEFAULT NULL,
    43  p6_md5 varchar(32) DEFAULT NULL,
    44  p7_md5 varchar(32) DEFAULT NULL,
    45  ext varchar(550) DEFAULT NULL,
    46  bm tinyint(1) DEFAULT '0' comment '[[set=0,1]]',
    47  ds date NOT NULL ,
    48  ds2 varchar(13) DEFAULT NULL ,
    49  t int(13) NOT NULL comment '[[range=1477971470,1479144000]]',
    50  PRIMARY KEY (id),
    51  KEY t (t),
    52  KEY icd (cm,ds)
    53  );
    54  load stats 's/explain_complex_stats_st.json';
    55  drop causet if exists dd;
    56  CREATE TABLE dd (
    57  id int(11) UNSIGNED NOT NULL,
    58  aid varchar(35) NOT NULL comment '[[set=cn.sbkcq,us.sbkcq]]',
    59  pt varchar(10) NOT NULL comment '[[set=android,ios]]',
    60  dic varchar(64) NOT NULL,
    61  dim varchar(32) NOT NULL ,
    62  mac varchar(32) DEFAULT NULL ,
    63  ip varchar(15) DEFAULT NULL ,
    64  t int(13) DEFAULT NULL comment '[[range=1478143900,1478144000]]',
    65  bm tinyint(1) DEFAULT '0' comment '[[set=0,1]]',
    66  PRIMARY KEY (id),
    67  UNIQUE KEY aid (aid,dic),
    68  KEY ip (ip),
    69  KEY pi (aid,dim),
    70  KEY t (t)
    71  );
    72  load stats 's/explain_complex_stats_dd.json';
    73  drop causet if exists pp;
    74  CREATE TABLE pp (
    75  oid varchar(20) NOT NULL,
    76  uid bigint(20) unsigned NOT NULL comment '[[set=18089709,18089710,18090780,18090781]]',
    77  cid int(11) unsigned NOT NULL,
    78  ppt int(11) NOT NULL DEFAULT '0' comment '[[range=1478188700,1478275300]]',
    79  FIDelt int(11) DEFAULT '0',
    80  am decimal(10,2) unsigned NOT NULL DEFAULT '0.00',
    81  cc decimal(10,2) NOT NULL DEFAULT '0.00',
    82  ps tinyint(1) NOT NULL comment '[[set=0,1,2]]',
    83  tid varchar(200) DEFAULT NULL,
    84  ppf varchar(50) NOT NULL comment '[[set=android,ios]]',
    85  bs tinyint(1) NOT NULL DEFAULT '0' comment '[[set=0,1]]',
    86  bex tinyint(1) NOT NULL DEFAULT '0' comment '[[set=0,1]]',
    87  bu int(11) NOT NULL DEFAULT '0' comment '[[set=0,1]]',
    88  pc char(10) NOT NULL DEFAULT 'CNY',
    89  ui int(16) NOT NULL DEFAULT '1',
    90  cr decimal(10,4) unsigned NOT NULL DEFAULT '1.0000',
    91  pi int(11) unsigned NOT NULL comment '[[set=510017,520017,530017]]',
    92  si int(11) unsigned NOT NULL,
    93  bcc int(11) NOT NULL DEFAULT '0',
    94  acc int(11) NOT NULL DEFAULT '0',
    95  KEY oid (oid),
    96  KEY uid (uid),
    97  KEY ppt (ppt),
    98  KEY FIDelt (FIDelt),
    99  KEY cid (cid),
   100  KEY ps (ps),
   101  KEY sp (uid,pi)
   102  );
   103  load stats 's/explain_complex_stats_pp.json';
   104  drop causet if exists rr;
   105  CREATE TABLE rr (
   106  aid varchar(35) NOT NULL comment '[[set=cn.sbkcq,us.sbkcq]]',
   107  pt varchar(10) NOT NULL comment '[[set=android,ios]]',
   108  dic varchar(64) NOT NULL ,
   109  gid varchar(42) NOT NULL ,
   110  acd varchar(32) NOT NULL ,
   111  t int(13) DEFAULT NULL comment '[[range=1478180000,1480275300]]',
   112  bm tinyint(1) DEFAULT '0' comment '[[set=0,1]]',
   113  PRIMARY KEY (aid,dic)
   114  );
   115  load stats 's/explain_complex_stats_rr.json';
   116  explain SELECT ds, p1, p2, p3, p4, p5, p6_md5, p7_md5, count(dic) as install_device FROM dt use index (cm) WHERE (ds >= '2020-09-01') AND (ds <= '2020-11-03') AND (cm IN ('1062', '1086', '1423', '1424', '1425', '1426', '1427', '1428', '1429', '1430', '1431', '1432', '1433', '1434', '1435', '1436', '1437', '1438', '1439', '1440', '1441', '1442', '1443', '1444', '1445', '1446', '1447', '1448', '1449', '1450', '1451', '1452', '1488', '1489', '1490', '1491', '1492', '1493', '1494', '1495', '1496', '1497', '1550', '1551', '1552', '1553', '1554', '1555', '1556', '1557', '1558', '1559', '1597', '1598', '1599', '1600', '1601', '1602', '1603', '1604', '1605', '1606', '1607', '1608', '1609', '1610', '1611', '1612', '1613', '1614', '1615', '1616', '1623', '1624', '1625', '1626', '1627', '1628', '1629', '1630', '1631', '1632', '1709', '1719', '1720', '1843', '2813', '2814', '2815', '2816', '2817', '2818', '2819', '2820', '2821', '2822', '2823', '2824', '2825', '2826', '2827', '2828', '2829', '2830', '2831', '2832', '2833', '2834', '2835', '2836', '2837', '2838', '2839', '2840', '2841', '2842', '2843', '2844', '2845', '2846', '2847', '2848', '2849', '2850', '2851', '2852', '2853', '2854', '2855', '2856', '2857', '2858', '2859', '2860', '2861', '2862', '2863', '2864', '2865', '2866', '2867', '2868', '2869', '2870', '2871', '2872', '3139', '3140', '3141', '3142', '3143', '3144', '3145', '3146', '3147', '3148', '3149', '3150', '3151', '3152', '3153', '3154', '3155', '3156', '3157', '3158', '3386', '3387', '3388', '3389', '3390', '3391', '3392', '3393', '3394', '3395', '3664', '3665', '3666', '3667', '3668', '3670', '3671', '3672', '3673', '3674', '3676', '3677', '3678', '3679', '3680', '3681', '3682', '3683', '3684', '3685', '3686', '3687', '3688', '3689', '3690', '3691', '3692', '3693', '3694', '3695', '3696', '3697', '3698', '3699', '3700', '3701', '3702', '3703', '3704', '3705', '3706', '3707', '3708', '3709', '3710', '3711', '3712', '3713', '3714', '3715', '3960', '3961', '3962', '3963', '3964', '3965', '3966', '3967', '3968', '3978', '3979', '3980', '3981', '3982', '3983', '3984', '3985', '3986', '3987', '4208', '4209', '4210', '4211', '4212', '4304', '4305', '4306', '4307', '4308', '4866', '4867', '4868', '4869', '4870', '4871', '4872', '4873', '4874', '4875')) GROUP BY ds, p1, p2, p3, p4, p5, p6_md5, p7_md5 ORDER BY ds2 DESC;
   117  id	estRows	task	access object	operator info
   118  Projection_7	21.53	root		test.dt.ds, test.dt.p1, test.dt.p2, test.dt.p3, test.dt.p4, test.dt.p5, test.dt.p6_md5, test.dt.p7_md5, DeferredCauset#21
   119  └─Sort_8	21.53	root		test.dt.ds2:desc
   120    └─HashAgg_16	21.53	root		group by:test.dt.ds, test.dt.p1, test.dt.p2, test.dt.p3, test.dt.p4, test.dt.p5, test.dt.p6_md5, test.dt.p7_md5, funcs:count(DeferredCauset#32)->DeferredCauset#21, funcs:firstrow(test.dt.ds)->test.dt.ds, funcs:firstrow(DeferredCauset#34)->test.dt.ds2, funcs:firstrow(test.dt.p1)->test.dt.p1, funcs:firstrow(test.dt.p2)->test.dt.p2, funcs:firstrow(test.dt.p3)->test.dt.p3, funcs:firstrow(test.dt.p4)->test.dt.p4, funcs:firstrow(test.dt.p5)->test.dt.p5, funcs:firstrow(test.dt.p6_md5)->test.dt.p6_md5, funcs:firstrow(test.dt.p7_md5)->test.dt.p7_md5
   121      └─IndexLookUp_17	21.53	root		
   122        ├─IndexRangeScan_13(Build)	128.32	cop[einsteindb]	causet:dt, index:cm(cm)	range:[1062,1062], [1086,1086], [1423,1423], [1424,1424], [1425,1425], [1426,1426], [1427,1427], [1428,1428], [1429,1429], [1430,1430], [1431,1431], [1432,1432], [1433,1433], [1434,1434], [1435,1435], [1436,1436], [1437,1437], [1438,1438], [1439,1439], [1440,1440], [1441,1441], [1442,1442], [1443,1443], [1444,1444], [1445,1445], [1446,1446], [1447,1447], [1448,1448], [1449,1449], [1450,1450], [1451,1451], [1452,1452], [1488,1488], [1489,1489], [1490,1490], [1491,1491], [1492,1492], [1493,1493], [1494,1494], [1495,1495], [1496,1496], [1497,1497], [1550,1550], [1551,1551], [1552,1552], [1553,1553], [1554,1554], [1555,1555], [1556,1556], [1557,1557], [1558,1558], [1559,1559], [1597,1597], [1598,1598], [1599,1599], [1600,1600], [1601,1601], [1602,1602], [1603,1603], [1604,1604], [1605,1605], [1606,1606], [1607,1607], [1608,1608], [1609,1609], [1610,1610], [1611,1611], [1612,1612], [1613,1613], [1614,1614], [1615,1615], [1616,1616], [1623,1623], [1624,1624], [1625,1625], [1626,1626], [1627,1627], [1628,1628], [1629,1629], [1630,1630], [1631,1631], [1632,1632], [1709,1709], [1719,1719], [1720,1720], [1843,1843], [2813,2813], [2814,2814], [2815,2815], [2816,2816], [2817,2817], [2818,2818], [2819,2819], [2820,2820], [2821,2821], [2822,2822], [2823,2823], [2824,2824], [2825,2825], [2826,2826], [2827,2827], [2828,2828], [2829,2829], [2830,2830], [2831,2831], [2832,2832], [2833,2833], [2834,2834], [2835,2835], [2836,2836], [2837,2837], [2838,2838], [2839,2839], [2840,2840], [2841,2841], [2842,2842], [2843,2843], [2844,2844], [2845,2845], [2846,2846], [2847,2847], [2848,2848], [2849,2849], [2850,2850], [2851,2851], [2852,2852], [2853,2853], [2854,2854], [2855,2855], [2856,2856], [2857,2857], [2858,2858], [2859,2859], [2860,2860], [2861,2861], [2862,2862], [2863,2863], [2864,2864], [2865,2865], [2866,2866], [2867,2867], [2868,2868], [2869,2869], [2870,2870], [2871,2871], [2872,2872], [3139,3139], [3140,3140], [3141,3141], [3142,3142], [3143,3143], [3144,3144], [3145,3145], [3146,3146], [3147,3147], [3148,3148], [3149,3149], [3150,3150], [3151,3151], [3152,3152], [3153,3153], [3154,3154], [3155,3155], [3156,3156], [3157,3157], [3158,3158], [3386,3386], [3387,3387], [3388,3388], [3389,3389], [3390,3390], [3391,3391], [3392,3392], [3393,3393], [3394,3394], [3395,3395], [3664,3664], [3665,3665], [3666,3666], [3667,3667], [3668,3668], [3670,3670], [3671,3671], [3672,3672], [3673,3673], [3674,3674], [3676,3676], [3677,3677], [3678,3678], [3679,3679], [3680,3680], [3681,3681], [3682,3682], [3683,3683], [3684,3684], [3685,3685], [3686,3686], [3687,3687], [3688,3688], [3689,3689], [3690,3690], [3691,3691], [3692,3692], [3693,3693], [3694,3694], [3695,3695], [3696,3696], [3697,3697], [3698,3698], [3699,3699], [3700,3700], [3701,3701], [3702,3702], [3703,3703], [3704,3704], [3705,3705], [3706,3706], [3707,3707], [3708,3708], [3709,3709], [3710,3710], [3711,3711], [3712,3712], [3713,3713], [3714,3714], [3715,3715], [3960,3960], [3961,3961], [3962,3962], [3963,3963], [3964,3964], [3965,3965], [3966,3966], [3967,3967], [3968,3968], [3978,3978], [3979,3979], [3980,3980], [3981,3981], [3982,3982], [3983,3983], [3984,3984], [3985,3985], [3986,3986], [3987,3987], [4208,4208], [4209,4209], [4210,4210], [4211,4211], [4212,4212], [4304,4304], [4305,4305], [4306,4306], [4307,4307], [4308,4308], [4866,4866], [4867,4867], [4868,4868], [4869,4869], [4870,4870], [4871,4871], [4872,4872], [4873,4873], [4874,4874], [4875,4875], keep order:false
   123        └─HashAgg_11(Probe)	21.53	cop[einsteindb]		group by:test.dt.ds, test.dt.p1, test.dt.p2, test.dt.p3, test.dt.p4, test.dt.p5, test.dt.p6_md5, test.dt.p7_md5, funcs:count(test.dt.dic)->DeferredCauset#32, funcs:firstrow(test.dt.ds2)->DeferredCauset#34
   124          └─Selection_15	21.56	cop[einsteindb]		ge(test.dt.ds, 2020-09-01 00:00:00.000000), le(test.dt.ds, 2020-11-03 00:00:00.000000)
   125            └─TableRowIDScan_14	128.32	cop[einsteindb]	causet:dt	keep order:false
   126  explain select gad.id as gid,sdk.id as sid,gad.aid as aid,gad.cm as cm,sdk.dic as dic,sdk.ip as ip, sdk.t as t, gad.p1 as p1, gad.p2 as p2, gad.p3 as p3, gad.p4 as p4, gad.p5 as p5, gad.p6_md5 as p6, gad.p7_md5 as p7, gad.ext as ext, gad.t as gtime from st gad join (select id, aid, pt, dic, ip, t from dd where pt = 'android' and bm = 0 and t > 1478143908) sdk on  gad.aid = sdk.aid and gad.ip = sdk.ip and sdk.t > gad.t where gad.t > 1478143908 and gad.bm = 0 and gad.pt = 'android' group by gad.aid, sdk.dic limit 2500;
   127  id	estRows	task	access object	operator info
   128  Projection_13	424.00	root		test.st.id, test.dd.id, test.st.aid, test.st.cm, test.dd.dic, test.dd.ip, test.dd.t, test.st.p1, test.st.p2, test.st.p3, test.st.p4, test.st.p5, test.st.p6_md5, test.st.p7_md5, test.st.ext, test.st.t
   129  └─Limit_16	424.00	root		offset:0, count:2500
   130    └─HashAgg_19	424.00	root		group by:test.dd.dic, test.st.aid, funcs:firstrow(test.st.id)->test.st.id, funcs:firstrow(test.st.aid)->test.st.aid, funcs:firstrow(test.st.cm)->test.st.cm, funcs:firstrow(test.st.p1)->test.st.p1, funcs:firstrow(test.st.p2)->test.st.p2, funcs:firstrow(test.st.p3)->test.st.p3, funcs:firstrow(test.st.p4)->test.st.p4, funcs:firstrow(test.st.p5)->test.st.p5, funcs:firstrow(test.st.p6_md5)->test.st.p6_md5, funcs:firstrow(test.st.p7_md5)->test.st.p7_md5, funcs:firstrow(test.st.ext)->test.st.ext, funcs:firstrow(test.st.t)->test.st.t, funcs:firstrow(test.dd.id)->test.dd.id, funcs:firstrow(test.dd.dic)->test.dd.dic, funcs:firstrow(test.dd.ip)->test.dd.ip, funcs:firstrow(test.dd.t)->test.dd.t
   131      └─HashJoin_34	424.00	root		inner join, equal:[eq(test.st.aid, test.dd.aid) eq(test.st.ip, test.dd.ip)], other cond:gt(test.dd.t, test.st.t)
   132        ├─TableReader_37(Build)	424.00	root		data:Selection_36
   133        │ └─Selection_36	424.00	cop[einsteindb]		eq(test.st.bm, 0), eq(test.st.pt, "android"), gt(test.st.t, 1478143908), not(isnull(test.st.ip))
   134        │   └─TableRangeScan_35	1999.00	cop[einsteindb]	causet:gad	range:[0,+inf], keep order:false
   135        └─TableReader_44(Probe)	455.80	root		data:Selection_43
   136          └─Selection_43	455.80	cop[einsteindb]		eq(test.dd.bm, 0), eq(test.dd.pt, "android"), gt(test.dd.t, 1478143908), not(isnull(test.dd.ip)), not(isnull(test.dd.t))
   137            └─TableRangeScan_42	2000.00	cop[einsteindb]	causet:dd	range:[0,+inf], keep order:false
   138  explain select gad.id as gid,sdk.id as sid,gad.aid as aid,gad.cm as cm,sdk.dic as dic,sdk.ip as ip, sdk.t as t, gad.p1 as p1, gad.p2 as p2, gad.p3 as p3, gad.p4 as p4, gad.p5 as p5, gad.p6_md5 as p6, gad.p7_md5 as p7, gad.ext as ext from st gad join dd sdk on gad.aid = sdk.aid and gad.dic = sdk.mac and gad.t < sdk.t where gad.t > 1477971479 and gad.bm = 0 and gad.pt = 'ios' and gad.dit = 'mac' and sdk.t > 1477971479 and sdk.bm = 0 and sdk.pt = 'ios' limit 3000;
   139  id	estRows	task	access object	operator info
   140  Projection_10	170.34	root		test.st.id, test.dd.id, test.st.aid, test.st.cm, test.dd.dic, test.dd.ip, test.dd.t, test.st.p1, test.st.p2, test.st.p3, test.st.p4, test.st.p5, test.st.p6_md5, test.st.p7_md5, test.st.ext
   141  └─Limit_13	170.34	root		offset:0, count:3000
   142    └─IndexMergeJoin_26	170.34	root		inner join, inner:IndexLookUp_24, outer key:test.st.aid, inner key:test.dd.aid, other cond:eq(test.st.dic, test.dd.mac), lt(test.st.t, test.dd.t)
   143      ├─TableReader_31(Build)	170.34	root		data:Selection_30
   144      │ └─Selection_30	170.34	cop[einsteindb]		eq(test.st.bm, 0), eq(test.st.dit, "mac"), eq(test.st.pt, "ios"), gt(test.st.t, 1477971479), not(isnull(test.st.dic))
   145      │   └─TableRangeScan_29	1999.00	cop[einsteindb]	causet:gad	range:[0,+inf], keep order:false
   146      └─IndexLookUp_24(Probe)	1.00	root		
   147        ├─IndexRangeScan_21(Build)	3.93	cop[einsteindb]	causet:sdk, index:aid(aid, dic)	range: decided by [eq(test.dd.aid, test.st.aid)], keep order:true
   148        └─Selection_23(Probe)	1.00	cop[einsteindb]		eq(test.dd.bm, 0), eq(test.dd.pt, "ios"), gt(test.dd.t, 1477971479), not(isnull(test.dd.mac)), not(isnull(test.dd.t))
   149          └─TableRowIDScan_22	3.93	cop[einsteindb]	causet:sdk	keep order:false
   150  explain SELECT cm, p1, p2, p3, p4, p5, p6_md5, p7_md5, count(1) as click_pv, count(DISTINCT ip) as click_ip FROM st WHERE (t between 1478188800 and 1478275200) and aid='cn.sbkcq' and pt='android' GROUP BY cm, p1, p2, p3, p4, p5, p6_md5, p7_md5;
   151  id	estRows	task	access object	operator info
   152  Projection_5	39.28	root		test.st.cm, test.st.p1, test.st.p2, test.st.p3, test.st.p4, test.st.p5, test.st.p6_md5, test.st.p7_md5, DeferredCauset#20, DeferredCauset#21
   153  └─HashAgg_6	39.28	root		group by:test.st.cm, test.st.p1, test.st.p2, test.st.p3, test.st.p4, test.st.p5, test.st.p6_md5, test.st.p7_md5, funcs:count(1)->DeferredCauset#20, funcs:count(distinct test.st.ip)->DeferredCauset#21, funcs:firstrow(test.st.cm)->test.st.cm, funcs:firstrow(test.st.p1)->test.st.p1, funcs:firstrow(test.st.p2)->test.st.p2, funcs:firstrow(test.st.p3)->test.st.p3, funcs:firstrow(test.st.p4)->test.st.p4, funcs:firstrow(test.st.p5)->test.st.p5, funcs:firstrow(test.st.p6_md5)->test.st.p6_md5, funcs:firstrow(test.st.p7_md5)->test.st.p7_md5
   154    └─IndexLookUp_13	39.38	root		
   155      ├─IndexRangeScan_10(Build)	160.23	cop[einsteindb]	causet:st, index:t(t)	range:[1478188800,1478275200], keep order:false
   156      └─Selection_12(Probe)	39.38	cop[einsteindb]		eq(test.st.aid, "cn.sbkcq"), eq(test.st.pt, "android")
   157        └─TableRowIDScan_11	160.23	cop[einsteindb]	causet:st	keep order:false
   158  explain select dt.id as id, dt.aid as aid, dt.pt as pt, dt.dic as dic, dt.cm as cm, rr.gid as gid, rr.acd as acd, rr.t as t,dt.p1 as p1, dt.p2 as p2, dt.p3 as p3, dt.p4 as p4, dt.p5 as p5, dt.p6_md5 as p6, dt.p7_md5 as p7 from dt dt join rr rr on (rr.pt = 'ios' and rr.t > 1478185592 and dt.aid = rr.aid and dt.dic = rr.dic) where dt.pt = 'ios' and dt.t > 1478185592 and dt.bm = 0 limit 2000;
   159  id	estRows	task	access object	operator info
   160  Projection_10	428.32	root		test.dt.id, test.dt.aid, test.dt.pt, test.dt.dic, test.dt.cm, test.rr.gid, test.rr.acd, test.rr.t, test.dt.p1, test.dt.p2, test.dt.p3, test.dt.p4, test.dt.p5, test.dt.p6_md5, test.dt.p7_md5
   161  └─Limit_13	428.32	root		offset:0, count:2000
   162    └─IndexMergeJoin_28	428.32	root		inner join, inner:Projection_26, outer key:test.dt.aid, test.dt.dic, inner key:test.rr.aid, test.rr.dic
   163      ├─TableReader_58(Build)	428.32	root		data:Selection_57
   164      │ └─Selection_57	428.32	cop[einsteindb]		eq(test.dt.bm, 0), eq(test.dt.pt, "ios"), gt(test.dt.t, 1478185592), not(isnull(test.dt.dic))
   165      │   └─TableRangeScan_56	2000.00	cop[einsteindb]	causet:dt	range:[0,+inf], keep order:false
   166      └─Projection_26(Probe)	1.00	root		test.rr.aid, test.rr.pt, test.rr.dic, test.rr.gid, test.rr.acd, test.rr.t
   167        └─IndexLookUp_25	1.00	root		
   168          ├─IndexRangeScan_22(Build)	1.00	cop[einsteindb]	causet:rr, index:PRIMARY(aid, dic)	range: decided by [eq(test.rr.aid, test.dt.aid) eq(test.rr.dic, test.dt.dic)], keep order:true
   169          └─Selection_24(Probe)	1.00	cop[einsteindb]		eq(test.rr.pt, "ios"), gt(test.rr.t, 1478185592)
   170            └─TableRowIDScan_23	1.00	cop[einsteindb]	causet:rr	keep order:false
   171  explain select pc,cr,count(DISTINCT uid) as pay_users,count(oid) as pay_times,sum(am) as am from pp where ps=2  and ppt>=1478188800 and ppt<1478275200  and pi in ('510017','520017') and uid in ('18089709','18090780') group by pc,cr;
   172  id	estRows	task	access object	operator info
   173  Projection_5	207.86	root		test.pp.pc, test.pp.cr, DeferredCauset#22, DeferredCauset#23, DeferredCauset#24
   174  └─HashAgg_6	207.86	root		group by:test.pp.cr, test.pp.pc, funcs:count(distinct test.pp.uid)->DeferredCauset#22, funcs:count(test.pp.oid)->DeferredCauset#23, funcs:sum(test.pp.am)->DeferredCauset#24, funcs:firstrow(test.pp.pc)->test.pp.pc, funcs:firstrow(test.pp.cr)->test.pp.cr
   175    └─IndexLookUp_17	207.86	root		
   176      ├─IndexRangeScan_14(Build)	627.00	cop[einsteindb]	causet:pp, index:ps(ps)	range:[2,2], keep order:false
   177      └─Selection_16(Probe)	207.86	cop[einsteindb]		ge(test.pp.ppt, 1478188800), in(test.pp.pi, 510017, 520017), in(test.pp.uid, 18089709, 18090780), lt(test.pp.ppt, 1478275200)
   178        └─TableRowIDScan_15	627.00	cop[einsteindb]	causet:pp	keep order:false
   179  drop causet if exists tbl_001;
   180  CREATE TABLE tbl_001 (a int, b int);
   181  load stats 's/explain_complex_stats_tbl_001.json';
   182  drop causet if exists tbl_002;
   183  CREATE TABLE tbl_002 (a int, b int);
   184  load stats 's/explain_complex_stats_tbl_002.json';
   185  drop causet if exists tbl_003;
   186  CREATE TABLE tbl_003 (a int, b int);
   187  load stats 's/explain_complex_stats_tbl_003.json';
   188  drop causet if exists tbl_004;
   189  CREATE TABLE tbl_004 (a int, b int);
   190  load stats 's/explain_complex_stats_tbl_004.json';
   191  drop causet if exists tbl_005;
   192  CREATE TABLE tbl_005 (a int, b int);
   193  load stats 's/explain_complex_stats_tbl_005.json';
   194  drop causet if exists tbl_006;
   195  CREATE TABLE tbl_006 (a int, b int);
   196  load stats 's/explain_complex_stats_tbl_006.json';
   197  drop causet if exists tbl_007;
   198  CREATE TABLE tbl_007 (a int, b int);
   199  load stats 's/explain_complex_stats_tbl_007.json';
   200  drop causet if exists tbl_008;
   201  CREATE TABLE tbl_008 (a int, b int);
   202  load stats 's/explain_complex_stats_tbl_008.json';
   203  drop causet if exists tbl_009;
   204  CREATE TABLE tbl_009 (a int, b int);
   205  load stats 's/explain_complex_stats_tbl_009.json';
   206  explain select sum(a) from (select * from tbl_001 union all select * from tbl_002 union all select * from tbl_003 union all select * from tbl_004 union all select * from tbl_005 union all select * from tbl_006 union all select * from tbl_007 union all select * from tbl_008 union all select * from tbl_009) x group by b;
   207  id	estRows	task	access object	operator info
   208  HashAgg_34	18000.00	root		group by:DeferredCauset#32, funcs:sum(DeferredCauset#31)->DeferredCauset#30
   209  └─Projection_63	18000.00	root		cast(DeferredCauset#28, decimal(65,0) BINARY)->DeferredCauset#31, DeferredCauset#29
   210    └─Union_35	18000.00	root		
   211      ├─TableReader_38	2000.00	root		data:TableFullScan_37
   212      │ └─TableFullScan_37	2000.00	cop[einsteindb]	causet:tbl_001	keep order:false
   213      ├─TableReader_41	2000.00	root		data:TableFullScan_40
   214      │ └─TableFullScan_40	2000.00	cop[einsteindb]	causet:tbl_002	keep order:false
   215      ├─TableReader_44	2000.00	root		data:TableFullScan_43
   216      │ └─TableFullScan_43	2000.00	cop[einsteindb]	causet:tbl_003	keep order:false
   217      ├─TableReader_47	2000.00	root		data:TableFullScan_46
   218      │ └─TableFullScan_46	2000.00	cop[einsteindb]	causet:tbl_004	keep order:false
   219      ├─TableReader_50	2000.00	root		data:TableFullScan_49
   220      │ └─TableFullScan_49	2000.00	cop[einsteindb]	causet:tbl_005	keep order:false
   221      ├─TableReader_53	2000.00	root		data:TableFullScan_52
   222      │ └─TableFullScan_52	2000.00	cop[einsteindb]	causet:tbl_006	keep order:false
   223      ├─TableReader_56	2000.00	root		data:TableFullScan_55
   224      │ └─TableFullScan_55	2000.00	cop[einsteindb]	causet:tbl_007	keep order:false
   225      ├─TableReader_59	2000.00	root		data:TableFullScan_58
   226      │ └─TableFullScan_58	2000.00	cop[einsteindb]	causet:tbl_008	keep order:false
   227      └─TableReader_62	2000.00	root		data:TableFullScan_61
   228        └─TableFullScan_61	2000.00	cop[einsteindb]	causet:tbl_009	keep order:false