Description:
Plan 1 is the plan selected by the optimizer, and its cost and execution time are much higher than Plan 2
mysql> explain analyze SELECT t4.c9 AS ref0, t2.c0 AS ref1, t5.c12 AS ref2, t5.c11 AS ref3, t2.c8 AS ref4, t1.c6 AS ref5, t0.c3 AS ref6, t3.c10 AS ref7, t4.c11 AS ref8, t1.c10 AS ref9, t5.c8 AS ref10, t3.c7 AS ref11, t2.c3 AS ref12, t1.c5 AS ref13, t5.c1 AS ref14, t2.c9 AS ref15, t5.c6 AS ref16, t4.c2 AS ref17, t5.c0 AS ref18, t3.c4 AS ref19, t3.c9 AS ref20, t3.c6 AS ref21 FROM t1, t3, t5, t2 INNER JOIN t0 ON EXISTS
(SELECT 1) STRAIGHT_JOIN t4 ON IF(CAST("" AS SIGNED), (t0.c1) NOT IN (t4.c3), ('MT') && (NULL));
| -> Filter: (0 <> if(<cache>(cast('' as signed)),(t0.c1 <> t4.c3),<cache>(((0 <> 'MT') and (0 <> NULL))))) (cost=21099 rows=153600) (actual time=75.4..75.4 rows=0 loops=1)
-> Inner hash join (no condition) (cost=21099 rows=153600) (actual time=21.5..69.1 rows=153600 loops=1)
-> Table scan on t4 (cost=0.00512 rows=3) (actual time=0.0197..0.0336 rows=3 loops=1)
-> Hash
-> Inner hash join (no condition) (cost=5478 rows=51200) (actual time=1.07..7.65 rows=51200 loops=1)
-> Table scan on t2 (cost=0.00471 rows=16) (actual time=0.00886..0.0786 rows=16 loops=1)
-> Hash
-> Inner hash join (no condition) (cost=344 rows=3200) (actual time=0.107..0.526 rows=3200 loops=1)
-> Table scan on t3 (cost=0.0124 rows=16) (actual time=0.00563..0.0306 rows=16 loops=1)
-> Hash
-> Inner hash join (no condition) (cost=23.2 rows=200) (actual time=0.0564..0.0746 rows=200 loops=1)
-> Table scan on t1 (cost=0.0656 rows=10) (actual time=0.00557..0.00675 rows=10 loops=1)
-> Hash
-> Inner hash join (no condition) (cost=2.9 rows=20) (actual time=0.0375..0.0421 rows=20 loops=1)
-> Table scan on t5 (cost=0.188 rows=5) (actual time=0.00491..0.00791 rows=5 loops=1)
-> Hash
-> Table scan on t0 (cost=0.65 rows=4) (actual time=0.0213..0.0237 rows=4 loops=1)
|
mysql> explain analyze SELECT /*+ JOIN_ORDER(t2, t5, t1) */ t4.c9 AS ref0, t2.c0 AS ref1, t5.c12 AS ref2, t5.c11 AS ref3, t2.c8 AS ref4, t1.c6 AS ref5, t0.c3 AS ref6, t3.c
5.c1 AS ref14, t2.c9 AS ref15, t5.c6 AS ref16, t4.c2 AS ref17, t5.c0 AS ref18, t3.c4 AS ref19, t3.c9 AS ref20, t3.c6 AS ref21 FROM t1, t3, t
5, t2 INNER JOIN t0 ON EXISTS (SELECT 1) STRAIGHT_JOIN t4 ON IF(CAST("" AS SIGNED), (t0.c1) NOT IN (t4.c3), ('MT') && (NULL));
| -> Inner hash join (no condition) (cost=16543 rows=153600) (actual time=0.126..0.126 rows=0 loops=1)
-> Table scan on t3 (cost=0.0095 rows=16) (never executed)
-> Hash
-> Inner hash join (no condition) (cost=1093 rows=9600) (actual time=0.123..0.123 rows=0 loops=1)
-> Table scan on t1 (cost=0.0106 rows=10) (never executed)
-> Hash
-> Inner hash join (no condition) (cost=124 rows=960) (actual time=0.119..0.119 rows=0 loops=1)
-> Table scan on t5 (cost=0.0101 rows=5) (never executed)
-> Hash
-> Filter: (0 <> if(<cache>(cast('' as signed)),(t0.c1 <> t4.c3),<cache>(((0 <> 'MT') and (0 <> NULL))))) (cost=26.8 rows=192) (actual time=0.116..0.116 rows=0 loops=1)
-> Inner hash join (no condition) (cost=26.8 rows=192) (actual time=0.0651..0.101 rows=192 loops=1)
-> Table scan on t4 (cost=0.00957 rows=3) (actual time=0.00362..0.00583 rows=3 loops=1)
-> Hash
-> Inner hash join (no condition) (cost=7.3 rows=64) (actual time=0.0381..0.0497 rows=64 loops=1)
-> Table scan on t2 (cost=0.463 rows=16) (actual time=0.00581..0.0132 rows=16 loops=1)
-> Hash
-> Table scan on t0 (cost=0.65 rows=4) (actual time=0.0207..0.023 rows=4 loops=1)
|
How to repeat:
CREATE TABLE t0(c0 FLOAT ZEROFILL STORAGE MEMORY COMMENT 'asdf' , c1 FLOAT UNIQUE COLUMN_FORMAT DEFAULT PRIMARY KEY NOT NULL STORAGE MEMORY, c2 FLOAT STORAGE MEMORY COMMENT 'asdf' COLUMN_FORMAT DEFAULT UNIQUE KEY, c3 FLOAT STORAGE MEMORY COLUMN_FORMAT DYNAMIC, c4 BIGINT(79) ZEROFILL , c5 FLOAT ZEROFILL STORAGE DISK NULL UNIQUE COMMENT 'asdf' , c6 BIGINT COLUMN_FORMAT DYNAMIC UNIQUE STORAGE DISK COMMENT 'asdf' NULL, c7 DECIMAL NULL, c8 LONGTEXT COMMENT 'asdf' STORAGE MEMORY NULL, c9 DECIMAL ZEROFILL STORAGE MEMORY COLUMN_FORMAT DYNAMIC COMMENT 'asdf' NULL , c10 INT ) ;
CREATE TABLE t1 LIKE t0;
CREATE TABLE t2 LIKE t1;
CREATE TABLE t3(c0 FLOAT UNIQUE COMMENT 'asdf' COLUMN_FORMAT FIXED STORAGE DISK , c1 FLOAT ZEROFILL UNIQUE KEY COMMENT 'asdf' , c2 INT UNIQUE KEY STORAGE MEMORY COMMENT 'asdf' , c3 FLOAT ZEROFILL COLUMN_FORMAT FIXED UNIQUE KEY COMMENT 'asdf' STORAGE MEMORY, c4 SMALLINT STORAGE DISK UNIQUE COLUMN_FORMAT DYNAMIC , c5 TINYTEXT COLUMN_FORMAT DYNAMIC STORAGE DISK NULL, c6 FLOAT , c7 LONGTEXT STORAGE MEMORY COLUMN_FORMAT FIXED COMMENT 'asdf' , c8 VARCHAR(500) , c9 BIGINT(83) STORAGE MEMORY COMMENT 'asdf' , c10 VARCHAR(500) ) ;
CREATE TABLE IF NOT EXISTS t4(c0 TEXT COMMENT 'asdf' COLUMN_FORMAT DYNAMIC, c1 TINYTEXT COMMENT 'asdf' COLUMN_FORMAT DYNAMIC, c2 TINYINT UNIQUE KEY PRIMARY KEY STORAGE MEMORY NOT NULL COMMENT 'asdf' COLUMN_FORMAT DEFAULT, c3 FLOAT COMMENT 'asdf' COLUMN_FORMAT DYNAMIC STORAGE MEMORY , c4 DECIMAL STORAGE MEMORY UNIQUE, c5 DECIMAL STORAGE DISK COLUMN_FORMAT DYNAMIC COMMENT 'asdf' UNIQUE KEY, c6 DECIMAL , c7 FLOAT ZEROFILL STORAGE DISK, c8 FLOAT UNIQUE KEY, c9 TEXT , c10 FLOAT UNIQUE KEY COMMENT 'asdf' COLUMN_FORMAT FIXED NULL STORAGE MEMORY, c11 DECIMAL NULL COLUMN_FORMAT DEFAULT UNIQUE COMMENT 'asdf' , c12 INT(73) ZEROFILL UNIQUE KEY STORAGE DISK COLUMN_FORMAT DEFAULT COMMENT 'asdf' ) ;
CREATE TABLE IF NOT EXISTS t5 LIKE t4;
INSERT LOW_PRIORITY IGNORE INTO t1 (c3) VALUES (NULL);
INSERT LOW_PRIORITY IGNORE INTO t5 (c6, c12, c1, c4, c0, c9) VALUES (NULL, NULL, NULL, '-1712827466', NULL, 127912041);
REPLACE DELAYED INTO t2(c10, c6, c7, c9, c2, c4, c1, c3, c0, c5, c8) VALUES(NULL, 1428021853, -621412982, 978404184, 1070445330, NULL, 0.6571966211727791, 0.09886180636627218, NULL, 1346601531, -5.54563407E8);
ALTER TABLE t2 STATS_PERSISTENT DEFAULT, DELAY_KEY_WRITE 0, DROP c1, FORCE, STATS_AUTO_RECALC DEFAULT, ALGORITHM DEFAULT;
INSERT DELAYED IGNORE INTO t2 (c7, c5, c3, c2, c4) VALUES (-1490771733, 0.8399819786230822, 'Y&5G', 0.43167294750482044, 0.12665820894779678);
INSERT HIGH_PRIORITY IGNORE INTO t2 (c8, c9) VALUES (567569539, 1029341466), (0.2901762019067322, 0.9401779691545753), (NULL, 206803764);
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE 'database0';
INSERT IGNORE INTO t1(c8, c2, c9, c6, c4, c0, c3, c7) VALUES(NULL, "v!A2", -480886367, 0.9703019300113719, 0.5077273557032961, "8\r", 0.29639176212263374, NULL);
INSERT IGNORE INTO t1 (c5, c0, c1, c4, c3, c8) VALUES (NULL, '0.2901762019067322', 1.2208896148235837E-4, "t ~F2<L", '#M 4FH', 605276529);
REPLACE DELAYED INTO t2(c5, c6, c10, c3) VALUES(1235487093, '-1261136596', NULL, 0.8840122297458023);
INSERT DELAYED IGNORE INTO t4 (c12, c5, c8, c0, c9, c10, c2, c11, c6) VALUES (2095792716, NULL, NULL, 775316931, 1599352931, NULL, 1330619921, NULL, '#jy\r{TD*');
INSERT LOW_PRIORITY IGNORE INTO t5 (c4, c7, c1, c11, c3, c8, c2, c5) VALUES (-662551184, 0.5224816564008069, "1528303241", NULL, 433595449, NULL, -2.084356507E9, 0.7708435772354485);
REPLACE LOW_PRIORITY INTO t5(c6, c3, c12, c4, c10, c11, c0, c8, c5, c7, c2) VALUES(2134590435, -949247578, '1084587453', -1136207109, -1312037698, 334684704, 1787376056, 0.04554456506161986, NULL, NULL, 0.18839782600525756);
REPLACE INTO t2(c2) VALUES(NULL);
INSERT HIGH_PRIORITY IGNORE INTO t1 (c9, c8, c4, c0, c6, c7, c3, c2, c5) VALUES (NULL, NULL, -244344320, "-1068002491", NULL, 'yJ', NULL, -125042686, 38233911), ("0.22751431062455363", NULL, NULL, 385155393, NULL, 0.4452952294419482, NULL, 1554105971, 0.33), (0.6847125746290519, "", 'A~quNB曍}', '<n]|', "", NULL, "", -662551184, 0.17476666765617221);
INSERT IGNORE INTO t3 (c9, c1, c10, c6, c4, c7, c3, c5, c2, c8, c0) VALUES ('.悳q ', 0.3309158568613225, "0~(u2ZSo", -1404332739, 1812323217, 0.7699548854645899, NULL, 0.4499178836233563, NULL, NULL, 0.9882271736160763), ("-1136207109", 0.34428654212446064, "0.9933849834076292", NULL, -7.43199914E8, 0.44328622603089374, ',', 595861003, NULL, 0.748, 0.8318020475118285), (0.10721327201309183, "", 1991916190, 'fLNq', ",sz孠⪢ネ", 0.13098913323483585, -4.80886367E8, '-1287731105', NULL, 1246109212, -1567074289);
INSERT DELAYED IGNORE INTO t5 (c0, c2, c9, c1, c12, c10, c3, c8) VALUES (670654525, '5Qr^R}p[C', 0.2763400531798109, NULL, 714117827, 1622267473, 1038261097, 2124240155);
ANALYZE LOCAL TABLE t5, t4;
INSERT LOW_PRIORITY IGNORE INTO t5 (c11, c5, c7, c8, c4, c3, c6, c12, c0, c2, c9, c10, c1) VALUES (0.29639176212263374, 653286892, 1177642701, 0.644805672276843, 1339432993, 1397699024, -1138800700, NULL, 0.4664803041158816, 1544606542, "", 1888315812, NULL);
INSERT IGNORE INTO t3 (c5, c4, c2, c10, c9, c6, c1, c3, c8, c0) VALUES (904910542, "[ᾷ8i", 1.159519515E9, 0.44253132664685246, NULL, 'V!A2', "w9*gE~P?", 0.8105045658466156, "vI", -2027587292);
INSERT LOW_PRIORITY INTO t3 (c3, c5, c8) VALUES (1414990845, NULL, '1591179513');
REPLACE LOW_PRIORITY INTO t3(c5, c10, c4, c7, c8, c1, c0) VALUES('', NULL, NULL, '', NULL, 0.6091941887858134, 0.16887348062252783);
INSERT IGNORE INTO t1 (c1, c4, c8, c0, c5) VALUES (479496892, 0.9966263581035122, NULL, "1504853252", 0.9401779691545753);
INSERT LOW_PRIORITY IGNORE INTO t1 (c7, c2, c0, c1, c9, c6) VALUES (0.007, 0.9898329429764994, 0.0033354878771083563, -372609178, -1339331740, NULL);
INSERT IGNORE INTO t5 (c0, c12, c4, c2, c3, c6, c5, c9, c10, c8) VALUES ('374039522', 0.285641866941863, "", -613238909, "Rt1", NULL, 646094923, NULL, 2092361327, '-743199914'), (1441498921, 0.7780025044993104, '\rt ''6u슂s', '-966889341', NULL, 1.330619921E9, '', 1450399742, NULL, "⌞?"), (-1579724685, 0.27256542179634735, "guuv?5.(", 0.9187749098708679, 1.27912041E8, NULL, 1.235487093E9, NULL, -1296803138, -966889341);
INSERT LOW_PRIORITY IGNORE INTO t5 (c10, c12, c7, c4, c9, c11, c8, c6, c1, c2, c5) VALUES (0.04845722561556309, 0.9567228012759794, -1381211158, -1, 0.9298252510221163, NULL, 1010732625, '1177642701', 0.6841420720971367, 601608998, "[ᾷ8i");
REPLACE DELAYED INTO t1(c1, c8, c5) VALUES(1683556541, NULL, 1303047794);
INSERT IGNORE INTO t2 (c9, c4, c5, c3, c2, c8, c0, c7) VALUES (NULL, '', -1786692698, "", NULL, -690600709, -1133383113, ''), (NULL, "Z0}~rLG]", 0.7976267612485246, '', 0.8151649450290259, 0.6339821566177698, NULL, 0.47705634392986473), ("-137985847", 3.34684704E8, 0.5504702636455466, "", 0.4390304952550108, 0.899373774548221, 1312017269, 18711666);
INSERT HIGH_PRIORITY IGNORE INTO t4 (c12, c2, c10, c1) VALUES ('1726805229', -523641656, NULL, 0.8029636821066345);
INSERT DELAYED IGNORE INTO t2 (c2, c5, c8, c4, c0, c7, c3, c9) VALUES (NULL, 0.4040089484507956, 0.5793175355807002, 0.6918283774943073, 0.43558471747832184, "", NULL, 0.4012431020601195);
INSERT HIGH_PRIORITY IGNORE INTO t4 (c8, c1, c11, c3, c7, c6, c10, c2) VALUES ('?>', 0.9696041538128666, "⎺n", '#^', 0.8103717093297768, "", 2054875198, NULL);
INSERT IGNORE INTO t0 (c6, c2, c8, c1, c5, c4, c10, c0, c3) VALUES (0.9529150218580018, "J7sG #", -2071536264, -64143386, 0.42842616332254013, NULL, -1092987463, -674317581, NULL);
REPLACE LOW_PRIORITY INTO t2(c6, c4, c3, c9, c5, c2, c8) VALUES(NULL, NULL, 0.294253931359427, 0.5071652599013209, NULL, NULL, NULL);
INSERT IGNORE INTO t2 (c8, c9) VALUES (0.24368572012270673, 1557706913);
INSERT INTO t3 (c5, c7) VALUES (98008951, "ꪑ5p-ꒊQ"), (0.14790777098892305, "?"), (-244344320, 1560757108);
REPLACE DELAYED INTO t3(c2, c7) VALUES(NULL, NULL), ("1312017269", NULL), (1832360771, '10kA0孠G');
REPLACE INTO t1(c8, c1) VALUES(31726309, 1320103993), (0.4664803041158816, 0.39885386256708555), ('', '-413792991');
INSERT DELAYED IGNORE INTO t0 (c9, c8, c1, c3, c4) VALUES (-556906670, '', '', 0.8578421246873303, NULL);
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE 'database0';
INSERT HIGH_PRIORITY IGNORE INTO t1 (c6, c7, c10, c4, c5, c8, c9) VALUES (NULL, 1.27912041E8, "", NULL, '1599352931', -1307469360, -1635130298);
REPLACE INTO t1(c9, c1) VALUES(1.346601531E9, 2134590435);
INSERT LOW_PRIORITY IGNORE INTO t1 (c5, c3, c2, c0, c1, c10, c9, c8, c7, c6) VALUES (NULL, 0.24655486714653319, '', "s}8㹥7Vp>", -1579724685, 567569539, 1.029341466E9, -8.85609016E8, 0.6949156446798439, 0.3414077244524245);
INSERT LOW_PRIORITY IGNORE INTO t3 (c5, c9, c4, c10, c0, c8) VALUES (4.52791429E8, -1381211158, 0.24607864896347753, '366079415', "366079415", "");
INSERT LOW_PRIORITY IGNORE INTO t5 (c7) VALUES (NULL);
INSERT HIGH_PRIORITY IGNORE INTO t2 (c0, c9, c8, c10, c4) VALUES ('t{M', 0.9703019300113719, 745724928, "Ҫ57a", NULL);
INSERT INTO t0 (c7, c1) VALUES (NULL, 0.7963299504656856);
REPLACE DELAYED INTO t2(c0, c9, c7, c2) VALUES(0.29639176212263374, NULL, 0.644805672276843, -1845626723);
INSERT IGNORE INTO t5 (c2, c10, c3, c8, c11, c12, c7, c9, c4, c0, c6, c5, c1) VALUES (1203382405, -1.468015293E9, '*iaQ', 0.04096215983659668, 1439022238, 0.21883819995465237, 0.8399819786230822, -1188980421, NULL, 0.5565571862438213, 410873212, NULL, NULL);
INSERT DELAYED IGNORE INTO t3 (c0, c7, c5) VALUES (0.9096418445204365, NULL, -316660552);
REPLACE LOW_PRIORITY INTO t3(c10, c6, c2) VALUES(-1088756869, -719671609, 600772558);
INSERT INTO t2 (c4, c0) VALUES (NULL, 19636509);
INSERT IGNORE INTO t0 (c1, c9, c2, c7, c5, c4, c0, c10, c6, c8, c3) VALUES (1214307270, 0.27892278270283, '+]', 'sjd', 0.5186261065663856, 0.8922463464856415, -2099318524, "1^", 567569539, -1557727293, '1901610672');
INSERT DELAYED IGNORE INTO t0 (c1, c2) VALUES (0.23471391742664327, -7.49253763E8), (">j", 0.22762774163726351), ('w', "");
REPLACE INTO t3(c10, c8, c3, c5) VALUES(0.4748169228948754, 2.134590435E9, NULL, -1371099096);
INSERT IGNORE INTO t4 (c10, c9, c2, c5, c3, c0, c12, c1, c4) VALUES (0.10031372381800396, 1.346601531E9, 0, 0.5594180300212201, 0.7138800099162989, -436502523, 959090587, 0.3531329464942009, -411033991);
INSERT IGNORE INTO t4 (c0, c7, c11, c9, c4, c8) VALUES (264960780, 334684704, NULL, -1712827466, 'Lb', NULL), (672687100, 1100709652, 0.8265935682448796, NULL, NULL, 0.818151176484107), (0.2707242534295824, 1706691406, 789061682, ' <', 0.21152077144782078, NULL);
REPLACE LOW_PRIORITY INTO t3(c5, c10, c1, c2, c6, c7, c9) VALUES(NULL, "", 0.7230340089013703, -295347358, "-1261136596", 0.31113326208513004, NULL);
INSERT INTO t3 (c6, c0, c2, c3) VALUES (NULL, -0, NULL, 0.4902938399637563);
INSERT HIGH_PRIORITY IGNORE INTO t1 (c9, c7, c5) VALUES (0.16035483196499822, 0.1233131863990633, 0.7804275550414281), ("?0J.", NULL, 0.9666481114876839), ('452791429', 0.5769027216086051, 1113965200);
--SELECT t4.c9 AS ref0, t2.c0 AS ref1, t5.c12 AS ref2, t5.c11 AS ref3, t2.c8 AS ref4, t1.c6 AS ref5, t0.c3 AS ref6, t3.c10 AS ref7, t4.c11 AS ref8, t1.c10 AS ref9, t5.c8 AS ref10, t3.c7 AS ref11, t2.c3 AS ref12, t1.c5 AS ref13, t5.c1 AS ref14, t2.c9 AS ref15, t5.c6 AS ref16, t4.c2 AS ref17, t5.c0 AS ref18, t3.c4 AS ref19, t3.c9 AS ref20, t3.c6 AS ref21 FROM t1, t3, t5, t2 INNER JOIN t0 ON EXISTS (SELECT 1) STRAIGHT_JOIN t4 ON IF(CAST("" AS SIGNED), (t0.c1) NOT IN (t4.c3), ('MT') && (NULL))
--SELECT /*+ JOIN_ORDER(t2, t5, t1) */ t4.c9 AS ref0, t2.c0 AS ref1, t5.c12 AS ref2, t5.c11 AS ref3, t2.c8 AS ref4, t1.c6 AS ref5, t0.c3 AS ref6, t3.c10 AS ref7, t4.c11 AS ref8, t1.c10 AS ref9, t5.c8 AS ref10, t3.c7 AS ref11, t2.c3 AS ref12, t1.c5 AS ref13, t5.c1 AS ref14, t2.c9 AS ref15, t5.c6 AS ref16, t4.c2 AS ref17, t5.c0 AS ref18, t3.c4 AS ref19, t3.c9 AS ref20, t3.c6 AS ref21 FROM t1, t3, t5, t2 INNER JOIN t0 ON EXISTS (SELECT 1) STRAIGHT_JOIN t4 ON IF(CAST("" AS SIGNED), (t0.c1) NOT IN (t4.c3), ('MT') && (NULL))