262 lines
23 KiB
Plaintext
262 lines
23 KiB
Plaintext
CREATE TABLE `dt` (
|
|
`id` int(11) unsigned NOT NULL AUTO_INCREMENT ,
|
|
`aid` varchar(32) NOT NULL,
|
|
`cm` int(10) unsigned NOT NULL,
|
|
`pt` varchar(10) NOT NULL,
|
|
`dic` varchar(64) DEFAULT NULL,
|
|
`ip` varchar(15) DEFAULT NULL,
|
|
`ds` date DEFAULT NULL,
|
|
`ds2` varchar(13) DEFAULT NULL ,
|
|
`t` int(13) DEFAULT NULL ,
|
|
`ext` varchar(550) DEFAULT NULL,
|
|
`p1` varchar(64) DEFAULT NULL ,
|
|
`p2` varchar(64) DEFAULT NULL,
|
|
`p3` varchar(64) DEFAULT NULL,
|
|
`p4` varchar(64) DEFAULT NULL,
|
|
`p5` varchar(64) DEFAULT NULL,
|
|
`p6_md5` varchar(32) DEFAULT NULL,
|
|
`p7_md5` varchar(32) DEFAULT NULL,
|
|
`bm` tinyint(1) DEFAULT '0',
|
|
`bgm` tinyint(1) DEFAULT '0',
|
|
`insert_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `aid` (`aid`,`dic`),
|
|
KEY `ip` (`ip`),
|
|
KEY `cmi` (`cm`)
|
|
);
|
|
CREATE TABLE `st` (
|
|
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT ,
|
|
`pt` varchar(10) NOT NULL ,
|
|
`aid` varchar(35) NOT NULL ,
|
|
`cm` int(10) NOT NULL ,
|
|
`ip` varchar(15) DEFAULT NULL ,
|
|
`dic` varchar(64) DEFAULT NULL ,
|
|
`dit` varchar(5) DEFAULT NULL,
|
|
`p1` varchar(64) DEFAULT NULL ,
|
|
`p2` varchar(64) DEFAULT NULL,
|
|
`p3` varchar(64) DEFAULT NULL,
|
|
`p4` varchar(64) DEFAULT NULL,
|
|
`p5` varchar(64) DEFAULT NULL,
|
|
`p6_md5` varchar(32) DEFAULT NULL,
|
|
`p7_md5` varchar(32) DEFAULT NULL,
|
|
`ext` varchar(550) DEFAULT NULL,
|
|
`bm` tinyint(1) DEFAULT '0',
|
|
`ds` date NOT NULL ,
|
|
`ds2` varchar(13) DEFAULT NULL ,
|
|
`t` int(13) NOT NULL ,
|
|
PRIMARY KEY (`id`),
|
|
KEY `t` (`t`),
|
|
KEY `icd` (`cm`,`ds`)
|
|
);
|
|
CREATE TABLE `dd` (
|
|
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT ,
|
|
`aid` varchar(35) NOT NULL ,
|
|
`pt` varchar(10) NOT NULL ,
|
|
`dic` varchar(64) NOT NULL,
|
|
`dim` varchar(32) NOT NULL ,
|
|
`mac` varchar(32) DEFAULT NULL ,
|
|
`ip` varchar(15) DEFAULT NULL ,
|
|
`t` int(13) DEFAULT NULL ,
|
|
`bm` tinyint(1) DEFAULT '0',
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `aid` (`aid`,`dic`),
|
|
KEY `ip` (`ip`),
|
|
KEY `pi` (`aid`,`dim`),
|
|
KEY `t` (`t`)
|
|
);
|
|
CREATE TABLE `pp` (
|
|
`oid` varchar(20) NOT NULL,
|
|
`uid` bigint(20) unsigned NOT NULL,
|
|
`cid` int(11) unsigned NOT NULL,
|
|
`ppt` int(11) NOT NULL DEFAULT '0',
|
|
`pdt` int(11) DEFAULT '0',
|
|
`am` decimal(10,2) unsigned NOT NULL DEFAULT '0.00',
|
|
`cc` decimal(10,2) NOT NULL DEFAULT '0.00',
|
|
`ps` tinyint(1) NOT NULL,
|
|
`tid` varchar(200) DEFAULT NULL,
|
|
`ppf` varchar(50) NOT NULL,
|
|
`bs` tinyint(1) NOT NULL DEFAULT '0',
|
|
`bex` tinyint(1) NOT NULL DEFAULT '0',
|
|
`bu` int(11) NOT NULL DEFAULT '0',
|
|
`pc` char(10) NOT NULL DEFAULT 'CNY',
|
|
`ui` int(16) NOT NULL DEFAULT '1',
|
|
`cr` decimal(10,4) unsigned NOT NULL DEFAULT '1.0000',
|
|
`pi` int(11) unsigned NOT NULL,
|
|
`si` int(11) unsigned NOT NULL,
|
|
`bcc` int(11) NOT NULL DEFAULT '0',
|
|
`acc` int(11) NOT NULL DEFAULT '0',
|
|
KEY `oid` (`oid`),
|
|
KEY `uid` (`uid`),
|
|
KEY `ppt` (`ppt`),
|
|
KEY `pdt` (`pdt`),
|
|
KEY `cid` (`cid`),
|
|
KEY `ps` (`ps`),
|
|
KEY `sp` (`uid`,`pi`)
|
|
);
|
|
CREATE TABLE `rr` (
|
|
`aid` varchar(35) NOT NULL ,
|
|
`pt` varchar(10) NOT NULL ,
|
|
`dic` varchar(64) NOT NULL ,
|
|
`gid` varchar(42) NOT NULL ,
|
|
`acd` varchar(32) NOT NULL ,
|
|
`t` int(13) DEFAULT NULL ,
|
|
`bm` tinyint(1) DEFAULT '0',
|
|
PRIMARY KEY (`aid`,`dic`)
|
|
);
|
|
explain SELECT `ds`, `p1`, `p2`, `p3`, `p4`, `p5`, `p6_md5`, `p7_md5`, count(dic) as install_device FROM `dt` use index (cmi) WHERE (`ds` >= '2016-09-01') AND (`ds` <= '2016-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;
|
|
id count task operator info
|
|
Projection_7 53.00 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, install_device
|
|
└─Sort_8 53.00 root test.dt.ds2:desc
|
|
└─HashAgg_16 53.00 root group by:col_10, col_11, col_12, col_13, col_14, col_15, col_16, col_17, funcs:count(col_0), firstrow(col_10), firstrow(col_2), firstrow(col_11), firstrow(col_12), firstrow(col_13), firstrow(col_14), firstrow(col_15), firstrow(col_16), firstrow(col_17)
|
|
└─IndexLookUp_17 53.00 root
|
|
├─IndexScan_13 2650.00 cop table:dt, index: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, stats:pseudo
|
|
└─HashAgg_11 53.00 cop 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), firstrow(test.dt.ds2)
|
|
└─Selection_15 66.25 cop ge(test.dt.ds, 2016-09-01 00:00:00.000000), le(test.dt.ds, 2016-11-03 00:00:00.000000)
|
|
└─TableScan_14 2650.00 cop table:dt, keep order:false, stats:pseudo
|
|
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.pt = 'android' group by gad.aid, sdk.dic limit 2500;
|
|
id count task operator info
|
|
Projection_13 1.00 root test.gad.id, test.dd.id, test.gad.aid, test.gad.cm, test.dd.dic, test.dd.ip, test.dd.t, test.gad.p1, test.gad.p2, test.gad.p3, test.gad.p4, test.gad.p5, test.gad.p6_md5, test.gad.p7_md5, test.gad.ext, test.gad.t
|
|
└─Limit_16 1.00 root offset:0, count:2500
|
|
└─HashAgg_19 1.00 root group by:test.dd.dic, test.gad.aid, funcs:firstrow(test.gad.id), firstrow(test.gad.aid), firstrow(test.gad.cm), firstrow(test.gad.p1), firstrow(test.gad.p2), firstrow(test.gad.p3), firstrow(test.gad.p4), firstrow(test.gad.p5), firstrow(test.gad.p6_md5), firstrow(test.gad.p7_md5), firstrow(test.gad.ext), firstrow(test.gad.t), firstrow(test.dd.id), firstrow(test.dd.dic), firstrow(test.dd.ip), firstrow(test.dd.t)
|
|
└─IndexJoin_24 0.00 root inner join, inner:IndexLookUp_23, outer key:test.gad.aid, inner key:test.dd.aid, other cond:eq(test.dd.ip, test.gad.ip), gt(test.dd.t, test.gad.t)
|
|
├─IndexLookUp_23 0.00 root
|
|
│ ├─IndexScan_20 10.00 cop table:dd, index:aid, dic, range: decided by [eq(test.dd.aid, test.gad.aid)], keep order:false, stats:pseudo
|
|
│ └─Selection_22 0.00 cop 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))
|
|
│ └─TableScan_21 10.00 cop table:dd, keep order:false, stats:pseudo
|
|
└─IndexLookUp_33 3.33 root
|
|
├─IndexScan_30 3333.33 cop table:gad, index:t, range:(1478143908,+inf], keep order:false, stats:pseudo
|
|
└─Selection_32 3.33 cop eq(test.gad.pt, "android"), not(isnull(test.gad.ip))
|
|
└─TableScan_31 3333.33 cop table:gad, keep order:false, stats:pseudo
|
|
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;
|
|
id count task operator info
|
|
Projection_10 0.00 root test.gad.id, test.sdk.id, test.gad.aid, test.gad.cm, test.sdk.dic, test.sdk.ip, test.sdk.t, test.gad.p1, test.gad.p2, test.gad.p3, test.gad.p4, test.gad.p5, test.gad.p6_md5, test.gad.p7_md5, test.gad.ext
|
|
└─Limit_13 0.00 root offset:0, count:3000
|
|
└─IndexJoin_18 0.00 root inner join, inner:IndexLookUp_17, outer key:test.gad.aid, inner key:test.sdk.aid, other cond:eq(test.gad.dic, test.sdk.mac), lt(test.gad.t, test.sdk.t)
|
|
├─IndexLookUp_27 0.00 root
|
|
│ ├─IndexScan_24 3333.33 cop table:gad, index:t, range:(1477971479,+inf], keep order:false, stats:pseudo
|
|
│ └─Selection_26 0.00 cop eq(test.gad.bm, 0), eq(test.gad.dit, "mac"), eq(test.gad.pt, "ios"), not(isnull(test.gad.dic))
|
|
│ └─TableScan_25 3333.33 cop table:gad, keep order:false, stats:pseudo
|
|
└─IndexLookUp_17 0.00 root
|
|
├─IndexScan_14 10.00 cop table:sdk, index:aid, dic, range: decided by [eq(test.sdk.aid, test.gad.aid)], keep order:false, stats:pseudo
|
|
└─Selection_16 0.00 cop eq(test.sdk.bm, 0), eq(test.sdk.pt, "ios"), gt(test.sdk.t, 1477971479), not(isnull(test.sdk.mac)), not(isnull(test.sdk.t))
|
|
└─TableScan_15 10.00 cop table:sdk, keep order:false, stats:pseudo
|
|
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;
|
|
id count task operator info
|
|
Projection_5 1.00 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, 3_col_0, 3_col_1
|
|
└─HashAgg_7 1.00 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), count(distinct test.st.ip), firstrow(test.st.cm), firstrow(test.st.p1), firstrow(test.st.p2), firstrow(test.st.p3), firstrow(test.st.p4), firstrow(test.st.p5), firstrow(test.st.p6_md5), firstrow(test.st.p7_md5)
|
|
└─IndexLookUp_15 0.00 root
|
|
├─IndexScan_12 250.00 cop table:st, index:t, range:[1478188800,1478275200], keep order:false, stats:pseudo
|
|
└─Selection_14 0.00 cop eq(test.st.aid, "cn.sbkcq"), eq(test.st.pt, "android")
|
|
└─TableScan_13 250.00 cop table:st, keep order:false, stats:pseudo
|
|
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;
|
|
id count task operator info
|
|
Projection_10 0.00 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
|
|
└─Limit_13 0.00 root offset:0, count:2000
|
|
└─IndexJoin_19 0.00 root inner join, inner:IndexLookUp_18, outer key:test.dt.aid, test.dt.dic, inner key:test.rr.aid, test.rr.dic
|
|
├─TableReader_40 0.00 root data:Selection_39
|
|
│ └─Selection_39 0.00 cop eq(test.dt.bm, 0), eq(test.dt.pt, "ios"), gt(test.dt.t, 1478185592), not(isnull(test.dt.dic))
|
|
│ └─TableScan_38 10000.00 cop table:dt, range:[0,+inf], keep order:false, stats:pseudo
|
|
└─IndexLookUp_18 0.00 root
|
|
├─IndexScan_15 10.00 cop table:rr, index:aid, dic, range: decided by [eq(test.rr.aid, test.dt.aid) eq(test.rr.dic, test.dt.dic)], keep order:false, stats:pseudo
|
|
└─Selection_17 0.00 cop eq(test.rr.pt, "ios"), gt(test.rr.t, 1478185592)
|
|
└─TableScan_16 10.00 cop table:rr, keep order:false, stats:pseudo
|
|
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;
|
|
id count task operator info
|
|
Projection_5 1.00 root test.pp.pc, test.pp.cr, 3_col_0, 3_col_1, 3_col_2
|
|
└─HashAgg_7 1.00 root group by:test.pp.cr, test.pp.pc, funcs:count(distinct test.pp.uid), count(test.pp.oid), sum(test.pp.am), firstrow(test.pp.pc), firstrow(test.pp.cr)
|
|
└─IndexLookUp_21 0.00 root
|
|
├─IndexScan_18 0.40 cop table:pp, index:uid, pi, range:[18089709 510017,18089709 510017], [18089709 520017,18089709 520017], [18090780 510017,18090780 510017], [18090780 520017,18090780 520017], keep order:false, stats:pseudo
|
|
└─Selection_20 0.00 cop eq(test.pp.ps, 2), ge(test.pp.ppt, 1478188800), lt(test.pp.ppt, 1478275200)
|
|
└─TableScan_19 0.40 cop table:pp, keep order:false, stats:pseudo
|
|
CREATE TABLE `tbl_001` (`a` int, `b` int);
|
|
CREATE TABLE `tbl_002` (`a` int, `b` int);
|
|
CREATE TABLE `tbl_003` (`a` int, `b` int);
|
|
CREATE TABLE `tbl_004` (`a` int, `b` int);
|
|
CREATE TABLE `tbl_005` (`a` int, `b` int);
|
|
CREATE TABLE `tbl_006` (`a` int, `b` int);
|
|
CREATE TABLE `tbl_007` (`a` int, `b` int);
|
|
CREATE TABLE `tbl_008` (`a` int, `b` int);
|
|
CREATE TABLE `tbl_009` (`a` int, `b` int);
|
|
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;
|
|
id count task operator info
|
|
HashAgg_34 72000.00 root group by:col_1, funcs:sum(col_0)
|
|
└─Projection_63 90000.00 root cast(x.a), x.b
|
|
└─Union_35 90000.00 root
|
|
├─TableReader_38 10000.00 root data:TableScan_37
|
|
│ └─TableScan_37 10000.00 cop table:tbl_001, range:[-inf,+inf], keep order:false, stats:pseudo
|
|
├─TableReader_41 10000.00 root data:TableScan_40
|
|
│ └─TableScan_40 10000.00 cop table:tbl_002, range:[-inf,+inf], keep order:false, stats:pseudo
|
|
├─TableReader_44 10000.00 root data:TableScan_43
|
|
│ └─TableScan_43 10000.00 cop table:tbl_003, range:[-inf,+inf], keep order:false, stats:pseudo
|
|
├─TableReader_47 10000.00 root data:TableScan_46
|
|
│ └─TableScan_46 10000.00 cop table:tbl_004, range:[-inf,+inf], keep order:false, stats:pseudo
|
|
├─TableReader_50 10000.00 root data:TableScan_49
|
|
│ └─TableScan_49 10000.00 cop table:tbl_005, range:[-inf,+inf], keep order:false, stats:pseudo
|
|
├─TableReader_53 10000.00 root data:TableScan_52
|
|
│ └─TableScan_52 10000.00 cop table:tbl_006, range:[-inf,+inf], keep order:false, stats:pseudo
|
|
├─TableReader_56 10000.00 root data:TableScan_55
|
|
│ └─TableScan_55 10000.00 cop table:tbl_007, range:[-inf,+inf], keep order:false, stats:pseudo
|
|
├─TableReader_59 10000.00 root data:TableScan_58
|
|
│ └─TableScan_58 10000.00 cop table:tbl_008, range:[-inf,+inf], keep order:false, stats:pseudo
|
|
└─TableReader_62 10000.00 root data:TableScan_61
|
|
└─TableScan_61 10000.00 cop table:tbl_009, range:[-inf,+inf], keep order:false, stats:pseudo
|
|
CREATE TABLE org_department (
|
|
id int(11) NOT NULL AUTO_INCREMENT,
|
|
ctx int(11) DEFAULT '0' COMMENT 'organization id',
|
|
name varchar(128) DEFAULT NULL,
|
|
left_value int(11) DEFAULT NULL,
|
|
right_value int(11) DEFAULT NULL,
|
|
depth int(11) DEFAULT NULL,
|
|
leader_id bigint(20) DEFAULT NULL,
|
|
status int(11) DEFAULT '1000',
|
|
created_on datetime DEFAULT NULL,
|
|
updated_on datetime DEFAULT NULL,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY org_department_id_uindex (id),
|
|
KEY org_department_leader_id_index (leader_id),
|
|
KEY org_department_ctx_index (ctx)
|
|
);
|
|
CREATE TABLE org_position (
|
|
id int(11) NOT NULL AUTO_INCREMENT,
|
|
ctx int(11) DEFAULT NULL,
|
|
name varchar(128) DEFAULT NULL,
|
|
left_value int(11) DEFAULT NULL,
|
|
right_value int(11) DEFAULT NULL,
|
|
depth int(11) DEFAULT NULL,
|
|
department_id int(11) DEFAULT NULL,
|
|
status int(2) DEFAULT NULL,
|
|
created_on datetime DEFAULT NULL,
|
|
updated_on datetime DEFAULT NULL,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY org_position_id_uindex (id),
|
|
KEY org_position_department_id_index (department_id)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
|
|
CREATE TABLE org_employee_position (
|
|
hotel_id int(11) DEFAULT NULL,
|
|
user_id bigint(20) DEFAULT NULL,
|
|
position_id int(11) DEFAULT NULL,
|
|
status int(11) DEFAULT NULL,
|
|
created_on datetime DEFAULT NULL,
|
|
updated_on datetime DEFAULT NULL,
|
|
UNIQUE KEY org_employee_position_pk (hotel_id,user_id,position_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
explain SELECT d.id, d.ctx, d.name, d.left_value, d.right_value, d.depth, d.leader_id, d.status, d.created_on, d.updated_on FROM org_department AS d LEFT JOIN org_position AS p ON p.department_id = d.id AND p.status = 1000 LEFT JOIN org_employee_position AS ep ON ep.position_id = p.id AND ep.status = 1000 WHERE (d.ctx = 1 AND (ep.user_id = 62 OR d.id = 20 OR d.id = 20) AND d.status = 1000) GROUP BY d.id ORDER BY d.left_value;
|
|
id count task operator info
|
|
Sort_10 1.00 root test.d.left_value:asc
|
|
└─HashAgg_15 1.00 root group by:test.d.id, funcs:firstrow(test.d.id), firstrow(test.d.ctx), firstrow(test.d.name), firstrow(test.d.left_value), firstrow(test.d.right_value), firstrow(test.d.depth), firstrow(test.d.leader_id), firstrow(test.d.status), firstrow(test.d.created_on), firstrow(test.d.updated_on)
|
|
└─Selection_22 0.01 root or(eq(test.ep.user_id, 62), or(eq(test.d.id, 20), eq(test.d.id, 20)))
|
|
└─HashLeftJoin_23 0.02 root left outer join, inner:TableReader_57, equal:[eq(test.p.id, test.ep.position_id)]
|
|
├─IndexJoin_32 0.01 root left outer join, inner:IndexLookUp_31, outer key:test.d.id, inner key:test.p.department_id
|
|
│ ├─IndexLookUp_47 0.01 root
|
|
│ │ ├─IndexScan_44 10.00 cop table:d, index:ctx, range:[1,1], keep order:false, stats:pseudo
|
|
│ │ └─Selection_46 0.01 cop eq(test.d.status, 1000)
|
|
│ │ └─TableScan_45 10.00 cop table:d, keep order:false, stats:pseudo
|
|
│ └─IndexLookUp_31 0.01 root
|
|
│ ├─Selection_29 9.99 cop not(isnull(test.p.department_id))
|
|
│ │ └─IndexScan_27 10.00 cop table:p, index:department_id, range: decided by [eq(test.p.department_id, test.d.id)], keep order:false, stats:pseudo
|
|
│ └─Selection_30 0.01 cop eq(test.p.status, 1000)
|
|
│ └─TableScan_28 9.99 cop table:p, keep order:false, stats:pseudo
|
|
└─TableReader_57 9.99 root data:Selection_56
|
|
└─Selection_56 9.99 cop eq(test.ep.status, 1000), not(isnull(test.ep.position_id))
|
|
└─TableScan_55 10000.00 cop table:ep, range:[-inf,+inf], keep order:false, stats:pseudo
|