DROP TABLE IF EXISTS t0,t1,t2,t3,t4,t5,t6,t7,t8,t9; CREATE TABLE t0 (a int, b int, c int); CREATE TABLE t1 (a int, b int, c int); CREATE TABLE t2 (a int, b int, c int); CREATE TABLE t3 (a int, b int, c int); CREATE TABLE t4 (a int, b int, c int); CREATE TABLE t5 (a int, b int, c int); CREATE TABLE t6 (a int, b int, c int); CREATE TABLE t7 (a int, b int, c int); CREATE TABLE t8 (a int, b int, c int); CREATE TABLE t9 (a int, b int, c int); INSERT INTO t0 VALUES (1,1,0), (1,2,0), (2,2,0); INSERT INTO t1 VALUES (1,3,0), (2,2,0), (3,2,0); INSERT INTO t2 VALUES (3,3,0), (4,2,0), (5,3,0); INSERT INTO t3 VALUES (1,2,0), (2,2,0); INSERT INTO t4 VALUES (3,2,0), (4,2,0); INSERT INTO t5 VALUES (3,1,0), (2,2,0), (3,3,0); INSERT INTO t6 VALUES (3,2,0), (6,2,0), (6,1,0); INSERT INTO t7 VALUES (1,1,0), (2,2,0); INSERT INTO t8 VALUES (0,2,0), (1,2,0); INSERT INTO t9 VALUES (1,1,0), (1,2,0), (3,3,0); SELECT t2.a,t2.b FROM t2; a b 3 3 4 2 5 3 SELECT t3.a,t3.b FROM t3; a b 1 2 2 2 SELECT t4.a,t4.b FROM t4; a b 3 2 4 2 SELECT t3.a,t3.b,t4.a,t4.b FROM t3,t4; a b a b 1 2 3 2 2 2 3 2 1 2 4 2 2 2 4 2 SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b FROM t2 LEFT JOIN (t3, t4) ON t2.b=t4.b; a b a b a b 3 3 NULL NULL NULL NULL 4 2 1 2 3 2 4 2 1 2 4 2 4 2 2 2 3 2 4 2 2 2 4 2 5 3 NULL NULL NULL NULL SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b FROM t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b; a b a b a b 3 3 NULL NULL NULL NULL 4 2 1 2 3 2 4 2 1 2 4 2 5 3 NULL NULL NULL NULL EXPLAIN EXTENDED SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b FROM t2 LEFT JOIN (t3, t4) ON t2.b=t4.b WHERE t3.a=1 OR t3.c IS NULL; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 1 SIMPLE t3 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t4 ALL NULL NULL NULL NULL 2 Warnings: Note 1003 select test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b` from test.t2 left join (test.t3 join test.t4) on((test.t2.b = test.t4.b)) where ((test.t3.a = 1) or isnull(test.t3.c)) SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b FROM t2 LEFT JOIN (t3, t4) ON t2.b=t4.b WHERE t3.a=1 OR t3.c IS NULL; a b a b a b 3 3 NULL NULL NULL NULL 4 2 1 2 3 2 4 2 1 2 4 2 5 3 NULL NULL NULL NULL SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b FROM t2 LEFT JOIN (t3, t4) ON t2.b=t4.b WHERE t3.a>1 OR t3.c IS NULL; a b a b a b 3 3 NULL NULL NULL NULL 4 2 2 2 3 2 4 2 2 2 4 2 5 3 NULL NULL NULL NULL SELECT t5.a,t5.b FROM t5; a b 3 1 2 2 3 3 SELECT t3.a,t3.b,t4.a,t4.b,t5.a,t5.b FROM t3,t4,t5; a b a b a b 1 2 3 2 3 1 2 2 3 2 3 1 1 2 4 2 3 1 2 2 4 2 3 1 1 2 3 2 2 2 2 2 3 2 2 2 1 2 4 2 2 2 2 2 4 2 2 2 1 2 3 2 3 3 2 2 3 2 3 3 1 2 4 2 3 3 2 2 4 2 3 3 SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b FROM t2 LEFT JOIN (t3, t4, t5) ON t2.b=t4.b; a b a b a b a b 3 3 NULL NULL NULL NULL NULL NULL 4 2 1 2 3 2 3 1 4 2 1 2 3 2 2 2 4 2 1 2 3 2 3 3 4 2 1 2 4 2 3 1 4 2 1 2 4 2 2 2 4 2 1 2 4 2 3 3 4 2 2 2 3 2 3 1 4 2 2 2 3 2 2 2 4 2 2 2 3 2 3 3 4 2 2 2 4 2 3 1 4 2 2 2 4 2 2 2 4 2 2 2 4 2 3 3 5 3 NULL NULL NULL NULL NULL NULL EXPLAIN EXTENDED SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b FROM t2 LEFT JOIN (t3, t4, t5) ON t2.b=t4.b WHERE t3.a>1 OR t3.c IS NULL; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 1 SIMPLE t3 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t4 ALL NULL NULL NULL NULL 2 1 SIMPLE t5 ALL NULL NULL NULL NULL 3 Warnings: Note 1003 select test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b`,test.t5.a AS `a`,test.t5.b AS `b` from test.t2 left join (test.t3 join test.t4 join test.t5) on((test.t2.b = test.t4.b)) where ((test.t3.a > 1) or isnull(test.t3.c)) SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b FROM t2 LEFT JOIN (t3, t4, t5) ON t2.b=t4.b WHERE t3.a>1 OR t3.c IS NULL; a b a b a b a b 3 3 NULL NULL NULL NULL NULL NULL 4 2 2 2 3 2 3 1 4 2 2 2 3 2 2 2 4 2 2 2 3 2 3 3 4 2 2 2 4 2 3 1 4 2 2 2 4 2 2 2 4 2 2 2 4 2 3 3 5 3 NULL NULL NULL NULL NULL NULL EXPLAIN EXTENDED SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b FROM t2 LEFT JOIN (t3, t4, t5) ON t2.b=t4.b WHERE (t3.a>1 OR t3.c IS NULL) AND (t5.a<3 OR t5.c IS NULL); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 1 SIMPLE t3 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t4 ALL NULL NULL NULL NULL 2 1 SIMPLE t5 ALL NULL NULL NULL NULL 3 Using where Warnings: Note 1003 select test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b`,test.t5.a AS `a`,test.t5.b AS `b` from test.t2 left join (test.t3 join test.t4 join test.t5) on((test.t2.b = test.t4.b)) where (((test.t3.a > 1) or isnull(test.t3.c)) and ((test.t5.a < 3) or isnull(test.t5.c))) SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b FROM t2 LEFT JOIN (t3, t4, t5) ON t2.b=t4.b WHERE (t3.a>1 OR t3.c IS NULL) AND (t5.a<3 OR t5.c IS NULL); a b a b a b a b 3 3 NULL NULL NULL NULL NULL NULL 4 2 2 2 3 2 2 2 4 2 2 2 4 2 2 2 5 3 NULL NULL NULL NULL NULL NULL SELECT t6.a,t6.b FROM t6; a b 3 2 6 2 6 1 SELECT t7.a,t7.b FROM t7; a b 1 1 2 2 SELECT t6.a,t6.b,t7.a,t7.b FROM t6,t7; a b a b 3 2 1 1 3 2 2 2 6 2 1 1 6 2 2 2 6 1 1 1 6 1 2 2 SELECT t8.a,t8.b FROM t8; a b 0 2 1 2 EXPLAIN EXTENDED SELECT t6.a,t6.b,t7.a,t7.b,t8.a,t8.b FROM t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t7 ALL NULL NULL NULL NULL 2 1 SIMPLE t6 ALL NULL NULL NULL NULL 3 1 SIMPLE t8 ALL NULL NULL NULL NULL 2 Warnings: Note 1003 select test.t6.a AS `a`,test.t6.b AS `b`,test.t7.a AS `a`,test.t7.b AS `b`,test.t8.a AS `a`,test.t8.b AS `b` from test.t6 join test.t7 left join test.t8 on(((test.t7.b = test.t8.b) and (test.t6.b < 10))) where 1 SELECT t6.a,t6.b,t7.a,t7.b,t8.a,t8.b FROM t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10; a b a b a b 3 2 1 1 NULL NULL 3 2 2 2 0 2 3 2 2 2 1 2 6 2 1 1 NULL NULL 6 2 2 2 0 2 6 2 2 2 1 2 6 1 1 1 NULL NULL 6 1 2 2 0 2 6 1 2 2 1 2 SELECT t5.a,t5.b FROM t5; a b 3 1 2 2 3 3 SELECT t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b FROM t5 LEFT JOIN ( t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10 ) ON t6.b >= 2 AND t5.b=t7.b; a b a b a b a b 3 1 3 2 1 1 NULL NULL 3 1 6 2 1 1 NULL NULL 2 2 3 2 2 2 0 2 2 2 3 2 2 2 1 2 2 2 6 2 2 2 0 2 2 2 6 2 2 2 1 2 3 3 NULL NULL NULL NULL NULL NULL SELECT t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b FROM t5 LEFT JOIN ( t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10 ) ON t6.b >= 2 AND t5.b=t7.b AND (t8.a < 1 OR t8.c IS NULL); a b a b a b a b 3 1 3 2 1 1 NULL NULL 3 1 6 2 1 1 NULL NULL 2 2 3 2 2 2 0 2 2 2 6 2 2 2 0 2 3 3 NULL NULL NULL NULL NULL NULL SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b FROM t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b; a b a b a b 3 3 NULL NULL NULL NULL 4 2 1 2 3 2 4 2 1 2 4 2 5 3 NULL NULL NULL NULL SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b FROM t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b, t5 LEFT JOIN ( t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10 ) ON t6.b >= 2 AND t5.b=t7.b; a b a b a b a b a b a b a b 3 3 NULL NULL NULL NULL 3 1 3 2 1 1 NULL NULL 3 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 4 2 1 2 3 2 3 1 3 2 1 1 NULL NULL 4 2 1 2 3 2 3 1 6 2 1 1 NULL NULL 4 2 1 2 4 2 3 1 3 2 1 1 NULL NULL 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 5 3 NULL NULL NULL NULL 3 1 3 2 1 1 NULL NULL 5 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 3 3 NULL NULL NULL NULL 2 2 3 2 2 2 0 2 3 3 NULL NULL NULL NULL 2 2 3 2 2 2 1 2 3 3 NULL NULL NULL NULL 2 2 6 2 2 2 0 2 3 3 NULL NULL NULL NULL 2 2 6 2 2 2 1 2 4 2 1 2 3 2 2 2 3 2 2 2 0 2 4 2 1 2 3 2 2 2 3 2 2 2 1 2 4 2 1 2 3 2 2 2 6 2 2 2 0 2 4 2 1 2 3 2 2 2 6 2 2 2 1 2 4 2 1 2 4 2 2 2 3 2 2 2 0 2 4 2 1 2 4 2 2 2 3 2 2 2 1 2 4 2 1 2 4 2 2 2 6 2 2 2 0 2 4 2 1 2 4 2 2 2 6 2 2 2 1 2 5 3 NULL NULL NULL NULL 2 2 3 2 2 2 0 2 5 3 NULL NULL NULL NULL 2 2 3 2 2 2 1 2 5 3 NULL NULL NULL NULL 2 2 6 2 2 2 0 2 5 3 NULL NULL NULL NULL 2 2 6 2 2 2 1 2 3 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL 4 2 1 2 3 2 3 3 NULL NULL NULL NULL NULL NULL 4 2 1 2 4 2 3 3 NULL NULL NULL NULL NULL NULL 5 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b FROM t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b, t5 LEFT JOIN ( t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10 ) ON t6.b >= 2 AND t5.b=t7.b WHERE t2.a > 3 AND (t6.a < 6 OR t6.c IS NULL); a b a b a b a b a b a b a b 4 2 1 2 3 2 3 1 3 2 1 1 NULL NULL 4 2 1 2 4 2 3 1 3 2 1 1 NULL NULL 5 3 NULL NULL NULL NULL 3 1 3 2 1 1 NULL NULL 4 2 1 2 3 2 2 2 3 2 2 2 0 2 4 2 1 2 3 2 2 2 3 2 2 2 1 2 4 2 1 2 4 2 2 2 3 2 2 2 0 2 4 2 1 2 4 2 2 2 3 2 2 2 1 2 5 3 NULL NULL NULL NULL 2 2 3 2 2 2 0 2 5 3 NULL NULL NULL NULL 2 2 3 2 2 2 1 2 4 2 1 2 3 2 3 3 NULL NULL NULL NULL NULL NULL 4 2 1 2 4 2 3 3 NULL NULL NULL NULL NULL NULL 5 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL SELECT t1.a,t1.b FROM t1; a b 1 3 2 2 3 2 SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b FROM t1 LEFT JOIN ( t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b, t5 LEFT JOIN ( t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10 ) ON t6.b >= 2 AND t5.b=t7.b ) ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND (t1.a != 2); a b a b a b a b a b a b a b a b 1 3 3 3 NULL NULL NULL NULL 3 1 3 2 1 1 NULL NULL 1 3 3 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 1 3 3 3 NULL NULL NULL NULL 2 2 3 2 2 2 0 2 1 3 3 3 NULL NULL NULL NULL 2 2 3 2 2 2 1 2 1 3 3 3 NULL NULL NULL NULL 2 2 6 2 2 2 0 2 1 3 3 3 NULL NULL NULL NULL 2 2 6 2 2 2 1 2 1 3 3 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL 1 3 4 2 1 2 3 2 3 1 3 2 1 1 NULL NULL 1 3 4 2 1 2 3 2 3 1 6 2 1 1 NULL NULL 1 3 4 2 1 2 3 2 3 3 NULL NULL NULL NULL NULL NULL 1 3 4 2 1 2 4 2 3 1 3 2 1 1 NULL NULL 1 3 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 1 3 4 2 1 2 4 2 3 3 NULL NULL NULL NULL NULL NULL 1 3 5 3 NULL NULL NULL NULL 3 1 3 2 1 1 NULL NULL 1 3 5 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 1 3 5 3 NULL NULL NULL NULL 2 2 3 2 2 2 0 2 1 3 5 3 NULL NULL NULL NULL 2 2 3 2 2 2 1 2 1 3 5 3 NULL NULL NULL NULL 2 2 6 2 2 2 0 2 1 3 5 3 NULL NULL NULL NULL 2 2 6 2 2 2 1 2 1 3 5 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL 2 2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 3 2 3 3 NULL NULL NULL NULL 3 1 3 2 1 1 NULL NULL 3 2 3 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 3 2 3 3 NULL NULL NULL NULL 2 2 3 2 2 2 0 2 3 2 3 3 NULL NULL NULL NULL 2 2 3 2 2 2 1 2 3 2 3 3 NULL NULL NULL NULL 2 2 6 2 2 2 0 2 3 2 3 3 NULL NULL NULL NULL 2 2 6 2 2 2 1 2 3 2 3 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL 3 2 4 2 1 2 3 2 3 1 3 2 1 1 NULL NULL 3 2 4 2 1 2 3 2 3 1 6 2 1 1 NULL NULL 3 2 4 2 1 2 3 2 2 2 3 2 2 2 0 2 3 2 4 2 1 2 3 2 2 2 3 2 2 2 1 2 3 2 4 2 1 2 3 2 2 2 6 2 2 2 0 2 3 2 4 2 1 2 3 2 2 2 6 2 2 2 1 2 3 2 4 2 1 2 3 2 3 3 NULL NULL NULL NULL NULL NULL 3 2 4 2 1 2 4 2 3 1 3 2 1 1 NULL NULL 3 2 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 3 2 4 2 1 2 4 2 2 2 3 2 2 2 0 2 3 2 4 2 1 2 4 2 2 2 3 2 2 2 1 2 3 2 4 2 1 2 4 2 2 2 6 2 2 2 0 2 3 2 4 2 1 2 4 2 2 2 6 2 2 2 1 2 3 2 4 2 1 2 4 2 3 3 NULL NULL NULL NULL NULL NULL 3 2 5 3 NULL NULL NULL NULL 3 1 3 2 1 1 NULL NULL 3 2 5 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 3 2 5 3 NULL NULL NULL NULL 2 2 3 2 2 2 0 2 3 2 5 3 NULL NULL NULL NULL 2 2 3 2 2 2 1 2 3 2 5 3 NULL NULL NULL NULL 2 2 6 2 2 2 0 2 3 2 5 3 NULL NULL NULL NULL 2 2 6 2 2 2 1 2 3 2 5 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b FROM t1 LEFT JOIN ( t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b, t5 LEFT JOIN ( t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10 ) ON t6.b >= 2 AND t5.b=t7.b ) ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND (t1.a != 2) WHERE (t2.a >= 4 OR t2.c IS NULL); a b a b a b a b a b a b a b a b 1 3 4 2 1 2 3 2 3 1 3 2 1 1 NULL NULL 1 3 4 2 1 2 3 2 3 1 6 2 1 1 NULL NULL 1 3 4 2 1 2 3 2 3 3 NULL NULL NULL NULL NULL NULL 1 3 4 2 1 2 4 2 3 1 3 2 1 1 NULL NULL 1 3 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 1 3 4 2 1 2 4 2 3 3 NULL NULL NULL NULL NULL NULL 1 3 5 3 NULL NULL NULL NULL 3 1 3 2 1 1 NULL NULL 1 3 5 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 1 3 5 3 NULL NULL NULL NULL 2 2 3 2 2 2 0 2 1 3 5 3 NULL NULL NULL NULL 2 2 3 2 2 2 1 2 1 3 5 3 NULL NULL NULL NULL 2 2 6 2 2 2 0 2 1 3 5 3 NULL NULL NULL NULL 2 2 6 2 2 2 1 2 1 3 5 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL 2 2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 3 2 4 2 1 2 3 2 3 1 3 2 1 1 NULL NULL 3 2 4 2 1 2 3 2 3 1 6 2 1 1 NULL NULL 3 2 4 2 1 2 3 2 2 2 3 2 2 2 0 2 3 2 4 2 1 2 3 2 2 2 3 2 2 2 1 2 3 2 4 2 1 2 3 2 2 2 6 2 2 2 0 2 3 2 4 2 1 2 3 2 2 2 6 2 2 2 1 2 3 2 4 2 1 2 3 2 3 3 NULL NULL NULL NULL NULL NULL 3 2 4 2 1 2 4 2 3 1 3 2 1 1 NULL NULL 3 2 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 3 2 4 2 1 2 4 2 2 2 3 2 2 2 0 2 3 2 4 2 1 2 4 2 2 2 3 2 2 2 1 2 3 2 4 2 1 2 4 2 2 2 6 2 2 2 0 2 3 2 4 2 1 2 4 2 2 2 6 2 2 2 1 2 3 2 4 2 1 2 4 2 3 3 NULL NULL NULL NULL NULL NULL 3 2 5 3 NULL NULL NULL NULL 3 1 3 2 1 1 NULL NULL 3 2 5 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 3 2 5 3 NULL NULL NULL NULL 2 2 3 2 2 2 0 2 3 2 5 3 NULL NULL NULL NULL 2 2 3 2 2 2 1 2 3 2 5 3 NULL NULL NULL NULL 2 2 6 2 2 2 0 2 3 2 5 3 NULL NULL NULL NULL 2 2 6 2 2 2 1 2 3 2 5 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL SELECT t0.a,t0.b FROM t0; a b 1 1 1 2 2 2 EXPLAIN EXTENDED SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b FROM t0,t1 LEFT JOIN ( t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b, t5 LEFT JOIN ( t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10 ) ON t6.b >= 2 AND t5.b=t7.b ) ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND (t1.a != 2) WHERE t0.a=1 AND t0.b=t1.b AND (t2.a >= 4 OR t2.c IS NULL); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t0 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t3 ALL NULL NULL NULL NULL 2 1 SIMPLE t4 ALL NULL NULL NULL NULL 2 1 SIMPLE t5 ALL NULL NULL NULL NULL 3 1 SIMPLE t7 ALL NULL NULL NULL NULL 2 1 SIMPLE t6 ALL NULL NULL NULL NULL 3 1 SIMPLE t8 ALL NULL NULL NULL NULL 2 Warnings: Note 1003 select test.t0.a AS `a`,test.t0.b AS `b`,test.t1.a AS `a`,test.t1.b AS `b`,test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b`,test.t5.a AS `a`,test.t5.b AS `b`,test.t6.a AS `a`,test.t6.b AS `b`,test.t7.a AS `a`,test.t7.b AS `b`,test.t8.a AS `a`,test.t8.b AS `b` from test.t0 join test.t1 left join (test.t2 left join (test.t3 join test.t4) on(((test.t3.a = 1) and (test.t2.b = test.t4.b))) join test.t5 left join (test.t6 join test.t7 left join test.t8 on(((test.t7.b = test.t8.b) and (test.t6.b < 10)))) on(((test.t6.b >= 2) and (test.t5.b = test.t7.b)))) on((((test.t3.b = 2) or isnull(test.t3.c)) and ((test.t6.b = 2) or isnull(test.t6.c)) and ((test.t1.b = test.t5.b) or isnull(test.t3.c) or isnull(test.t6.c) or isnull(test.t8.c)) and (test.t1.a <> 2))) where ((test.t0.a = 1) and (test.t0.b = test.t1.b) and ((test.t2.a >= 4) or isnull(test.t2.c))) SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b FROM t0,t1 LEFT JOIN ( t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b, t5 LEFT JOIN ( t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10 ) ON t6.b >= 2 AND t5.b=t7.b ) ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND (t1.a != 2) WHERE t0.a=1 AND t0.b=t1.b AND (t2.a >= 4 OR t2.c IS NULL); a b a b a b a b a b a b a b a b a b 1 2 2 2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 2 3 2 4 2 1 2 3 2 3 1 3 2 1 1 NULL NULL 1 2 3 2 4 2 1 2 3 2 3 1 6 2 1 1 NULL NULL 1 2 3 2 4 2 1 2 3 2 2 2 3 2 2 2 0 2 1 2 3 2 4 2 1 2 3 2 2 2 3 2 2 2 1 2 1 2 3 2 4 2 1 2 3 2 2 2 6 2 2 2 0 2 1 2 3 2 4 2 1 2 3 2 2 2 6 2 2 2 1 2 1 2 3 2 4 2 1 2 3 2 3 3 NULL NULL NULL NULL NULL NULL 1 2 3 2 4 2 1 2 4 2 3 1 3 2 1 1 NULL NULL 1 2 3 2 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 1 2 3 2 4 2 1 2 4 2 2 2 3 2 2 2 0 2 1 2 3 2 4 2 1 2 4 2 2 2 3 2 2 2 1 2 1 2 3 2 4 2 1 2 4 2 2 2 6 2 2 2 0 2 1 2 3 2 4 2 1 2 4 2 2 2 6 2 2 2 1 2 1 2 3 2 4 2 1 2 4 2 3 3 NULL NULL NULL NULL NULL NULL 1 2 3 2 5 3 NULL NULL NULL NULL 3 1 3 2 1 1 NULL NULL 1 2 3 2 5 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 1 2 3 2 5 3 NULL NULL NULL NULL 2 2 3 2 2 2 0 2 1 2 3 2 5 3 NULL NULL NULL NULL 2 2 3 2 2 2 1 2 1 2 3 2 5 3 NULL NULL NULL NULL 2 2 6 2 2 2 0 2 1 2 3 2 5 3 NULL NULL NULL NULL 2 2 6 2 2 2 1 2 1 2 3 2 5 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL EXPLAIN EXTENDED SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b FROM t0,t1 LEFT JOIN ( t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b, t5 LEFT JOIN ( t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10 ) ON t6.b >= 2 AND t5.b=t7.b ) ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND (t1.a != 2), t9 WHERE t0.a=1 AND t0.b=t1.b AND (t2.a >= 4 OR t2.c IS NULL) AND (t3.a < 5 OR t3.c IS NULL) AND (t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND (t5.a >=2 OR t5.c IS NULL) AND (t6.a >=4 OR t6.c IS NULL) AND (t7.a <= 2 OR t7.c IS NULL) AND (t8.a < 1 OR t8.c IS NULL) AND (t8.b=t9.b OR t8.c IS NULL) AND (t9.a=1); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t0 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t3 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t4 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t5 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t7 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t6 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t8 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t9 ALL NULL NULL NULL NULL 3 Using where Warnings: Note 1003 select test.t0.a AS `a`,test.t0.b AS `b`,test.t1.a AS `a`,test.t1.b AS `b`,test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b`,test.t5.a AS `a`,test.t5.b AS `b`,test.t6.a AS `a`,test.t6.b AS `b`,test.t7.a AS `a`,test.t7.b AS `b`,test.t8.a AS `a`,test.t8.b AS `b`,test.t9.a AS `a`,test.t9.b AS `b` from test.t0 join test.t1 left join (test.t2 left join (test.t3 join test.t4) on(((test.t3.a = 1) and (test.t2.b = test.t4.b))) join test.t5 left join (test.t6 join test.t7 left join test.t8 on(((test.t7.b = test.t8.b) and (test.t6.b < 10)))) on(((test.t6.b >= 2) and (test.t5.b = test.t7.b)))) on((((test.t3.b = 2) or isnull(test.t3.c)) and ((test.t6.b = 2) or isnull(test.t6.c)) and ((test.t1.b = test.t5.b) or isnull(test.t3.c) or isnull(test.t6.c) or isnull(test.t8.c)) and (test.t1.a <> 2))) join test.t9 where ((test.t0.a = 1) and (test.t0.b = test.t1.b) and ((test.t2.a >= 4) or isnull(test.t2.c)) and ((test.t3.a < 5) or isnull(test.t3.c)) and ((test.t3.b = test.t4.b) or isnull(test.t3.c) or isnull(test.t4.c)) and ((test.t5.a >= 2) or isnull(test.t5.c)) and ((test.t6.a >= 4) or isnull(test.t6.c)) and ((test.t7.a <= 2) or isnull(test.t7.c)) and ((test.t8.a < 1) or isnull(test.t8.c)) and ((test.t8.b = test.t9.b) or isnull(test.t8.c)) and (test.t9.a = 1)) SELECT t9.a,t9.b FROM t9; a b 1 1 1 2 3 3 SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b FROM t0,t1 LEFT JOIN ( t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b, t5 LEFT JOIN ( t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10 ) ON t6.b >= 2 AND t5.b=t7.b ) ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND (t1.a != 2), t9 WHERE t0.a=1 AND t0.b=t1.b AND (t2.a >= 4 OR t2.c IS NULL) AND (t3.a < 5 OR t3.c IS NULL) AND (t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND (t5.a >=2 OR t5.c IS NULL) AND (t6.a >=4 OR t6.c IS NULL) AND (t7.a <= 2 OR t7.c IS NULL) AND (t8.a < 1 OR t8.c IS NULL) AND (t8.b=t9.b OR t8.c IS NULL) AND (t9.a=1); a b a b a b a b a b a b a b a b a b a b 1 2 2 2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 1 1 2 3 2 4 2 1 2 3 2 3 1 6 2 1 1 NULL NULL 1 1 1 2 3 2 4 2 1 2 3 2 3 3 NULL NULL NULL NULL NULL NULL 1 1 1 2 3 2 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 1 1 1 2 3 2 4 2 1 2 4 2 3 3 NULL NULL NULL NULL NULL NULL 1 1 1 2 3 2 5 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 1 1 1 2 3 2 5 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL 1 1 1 2 2 2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 2 1 2 3 2 4 2 1 2 3 2 3 1 6 2 1 1 NULL NULL 1 2 1 2 3 2 4 2 1 2 3 2 2 2 6 2 2 2 0 2 1 2 1 2 3 2 4 2 1 2 3 2 3 3 NULL NULL NULL NULL NULL NULL 1 2 1 2 3 2 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 1 2 1 2 3 2 4 2 1 2 4 2 2 2 6 2 2 2 0 2 1 2 1 2 3 2 4 2 1 2 4 2 3 3 NULL NULL NULL NULL NULL NULL 1 2 1 2 3 2 5 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 1 2 1 2 3 2 5 3 NULL NULL NULL NULL 2 2 6 2 2 2 0 2 1 2 1 2 3 2 5 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL 1 2 SELECT t1.a,t1.b FROM t1; a b 1 3 2 2 3 2 SELECT t2.a,t2.b FROM t2; a b 3 3 4 2 5 3 SELECT t3.a,t3.b FROM t3; a b 1 2 2 2 SELECT t2.a,t2.b,t3.a,t3.b FROM t2 LEFT JOIN t3 ON t2.b=t3.b; a b a b 3 3 NULL NULL 4 2 1 2 4 2 2 2 5 3 NULL NULL SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b FROM t1, t2 LEFT JOIN t3 ON t2.b=t3.b WHERE t1.a <= 2; a b a b a b 1 3 3 3 NULL NULL 2 2 3 3 NULL NULL 1 3 4 2 1 2 1 3 4 2 2 2 2 2 4 2 1 2 2 2 4 2 2 2 1 3 5 3 NULL NULL 2 2 5 3 NULL NULL SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b FROM t1, t3 RIGHT JOIN t2 ON t2.b=t3.b WHERE t1.a <= 2; a b a b a b 1 3 3 3 NULL NULL 2 2 3 3 NULL NULL 1 3 4 2 1 2 1 3 4 2 2 2 2 2 4 2 1 2 2 2 4 2 2 2 1 3 5 3 NULL NULL 2 2 5 3 NULL NULL SELECT t3.a,t3.b,t4.a,t4.b FROM t3,t4; a b a b 1 2 3 2 2 2 3 2 1 2 4 2 2 2 4 2 SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b FROM t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b; a b a b a b 3 3 NULL NULL NULL NULL 4 2 1 2 3 2 4 2 1 2 4 2 5 3 NULL NULL NULL NULL SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b FROM t1, t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b WHERE t1.a <= 2; a b a b a b a b 1 3 3 3 NULL NULL NULL NULL 2 2 3 3 NULL NULL NULL NULL 1 3 4 2 1 2 3 2 1 3 4 2 1 2 4 2 2 2 4 2 1 2 3 2 2 2 4 2 1 2 4 2 1 3 5 3 NULL NULL NULL NULL 2 2 5 3 NULL NULL NULL NULL SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b FROM t1, (t3, t4) RIGHT JOIN t2 ON t3.a=1 AND t2.b=t4.b WHERE t1.a <= 2; a b a b a b a b 1 3 3 3 NULL NULL NULL NULL 2 2 3 3 NULL NULL NULL NULL 1 3 4 2 1 2 3 2 1 3 4 2 1 2 4 2 2 2 4 2 1 2 3 2 2 2 4 2 1 2 4 2 1 3 5 3 NULL NULL NULL NULL 2 2 5 3 NULL NULL NULL NULL SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b FROM t1, t3, t4 RIGHT JOIN t2 ON t3.a=1 AND t2.b=t4.b WHERE t1.a <= 2; a b a b a b a b 1 3 3 3 1 2 NULL NULL 1 3 3 3 2 2 NULL NULL 2 2 3 3 1 2 NULL NULL 2 2 3 3 2 2 NULL NULL 1 3 4 2 1 2 3 2 1 3 4 2 1 2 4 2 1 3 4 2 2 2 NULL NULL 2 2 4 2 1 2 3 2 2 2 4 2 1 2 4 2 2 2 4 2 2 2 NULL NULL 1 3 5 3 1 2 NULL NULL 1 3 5 3 2 2 NULL NULL 2 2 5 3 1 2 NULL NULL 2 2 5 3 2 2 NULL NULL EXPLAIN EXTENDED SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b FROM t1, t3, t4 RIGHT JOIN t2 ON t3.a=1 AND t2.b=t4.b WHERE t1.a <= 2; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t3 ALL NULL NULL NULL NULL 2 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 1 SIMPLE t4 ALL NULL NULL NULL NULL 2 Warnings: Note 1003 select test.t1.a AS `a`,test.t1.b AS `b`,test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b` from test.t1 join test.t3 join test.t2 left join test.t4 on(((test.t3.a = 1) and (test.t2.b = test.t4.b))) where (test.t1.a <= 2) CREATE INDEX idx_b ON t2(b); EXPLAIN EXTENDED SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b FROM t3,t4 LEFT JOIN (t1,t2) ON t3.a=1 AND t3.b=t2.b AND t2.b=t4.b; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t3 ALL NULL NULL NULL NULL 2 1 SIMPLE t4 ALL NULL NULL NULL NULL 2 1 SIMPLE t2 ref idx_b idx_b 5 test.t3.b 2 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Warnings: Note 1003 select test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b` from test.t3 join test.t4 left join (test.t1 join test.t2) on(((test.t3.a = 1) and (test.t3.b = test.t2.b) and (test.t2.b = test.t4.b))) where 1 SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b FROM t3,t4 LEFT JOIN (t1,t2) ON t3.a=1 AND t3.b=t2.b AND t2.b=t4.b; a b a b a b 4 2 1 2 3 2 4 2 1 2 3 2 4 2 1 2 3 2 NULL NULL 2 2 3 2 4 2 1 2 4 2 4 2 1 2 4 2 4 2 1 2 4 2 NULL NULL 2 2 4 2 EXPLAIN EXTENDED SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b FROM t0,t1 LEFT JOIN ( t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b, t5 LEFT JOIN ( t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10 ) ON t6.b >= 2 AND t5.b=t7.b ) ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND (t1.a != 2), t9 WHERE t0.a=1 AND t0.b=t1.b AND (t2.a >= 4 OR t2.c IS NULL) AND (t3.a < 5 OR t3.c IS NULL) AND (t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND (t5.a >=2 OR t5.c IS NULL) AND (t6.a >=4 OR t6.c IS NULL) AND (t7.a <= 2 OR t7.c IS NULL) AND (t8.a < 1 OR t8.c IS NULL) AND (t8.b=t9.b OR t8.c IS NULL) AND (t9.a=1); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t0 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t3 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t4 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t5 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t7 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t6 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t8 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t9 ALL NULL NULL NULL NULL 3 Using where Warnings: Note 1003 select test.t0.a AS `a`,test.t0.b AS `b`,test.t1.a AS `a`,test.t1.b AS `b`,test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b`,test.t5.a AS `a`,test.t5.b AS `b`,test.t6.a AS `a`,test.t6.b AS `b`,test.t7.a AS `a`,test.t7.b AS `b`,test.t8.a AS `a`,test.t8.b AS `b`,test.t9.a AS `a`,test.t9.b AS `b` from test.t0 join test.t1 left join (test.t2 left join (test.t3 join test.t4) on(((test.t3.a = 1) and (test.t2.b = test.t4.b))) join test.t5 left join (test.t6 join test.t7 left join test.t8 on(((test.t7.b = test.t8.b) and (test.t6.b < 10)))) on(((test.t6.b >= 2) and (test.t5.b = test.t7.b)))) on((((test.t3.b = 2) or isnull(test.t3.c)) and ((test.t6.b = 2) or isnull(test.t6.c)) and ((test.t1.b = test.t5.b) or isnull(test.t3.c) or isnull(test.t6.c) or isnull(test.t8.c)) and (test.t1.a <> 2))) join test.t9 where ((test.t0.a = 1) and (test.t0.b = test.t1.b) and ((test.t2.a >= 4) or isnull(test.t2.c)) and ((test.t3.a < 5) or isnull(test.t3.c)) and ((test.t3.b = test.t4.b) or isnull(test.t3.c) or isnull(test.t4.c)) and ((test.t5.a >= 2) or isnull(test.t5.c)) and ((test.t6.a >= 4) or isnull(test.t6.c)) and ((test.t7.a <= 2) or isnull(test.t7.c)) and ((test.t8.a < 1) or isnull(test.t8.c)) and ((test.t8.b = test.t9.b) or isnull(test.t8.c)) and (test.t9.a = 1)) CREATE INDEX idx_b ON t4(b); CREATE INDEX idx_b ON t5(b); EXPLAIN EXTENDED SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b FROM t0,t1 LEFT JOIN ( t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b, t5 LEFT JOIN ( t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10 ) ON t6.b >= 2 AND t5.b=t7.b ) ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND (t1.a != 2), t9 WHERE t0.a=1 AND t0.b=t1.b AND (t2.a >= 4 OR t2.c IS NULL) AND (t3.a < 5 OR t3.c IS NULL) AND (t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND (t5.a >=2 OR t5.c IS NULL) AND (t6.a >=4 OR t6.c IS NULL) AND (t7.a <= 2 OR t7.c IS NULL) AND (t8.a < 1 OR t8.c IS NULL) AND (t8.b=t9.b OR t8.c IS NULL) AND (t9.a=1); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t0 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t3 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 Using where 1 SIMPLE t5 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t7 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t6 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t8 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t9 ALL NULL NULL NULL NULL 3 Using where Warnings: Note 1003 select test.t0.a AS `a`,test.t0.b AS `b`,test.t1.a AS `a`,test.t1.b AS `b`,test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b`,test.t5.a AS `a`,test.t5.b AS `b`,test.t6.a AS `a`,test.t6.b AS `b`,test.t7.a AS `a`,test.t7.b AS `b`,test.t8.a AS `a`,test.t8.b AS `b`,test.t9.a AS `a`,test.t9.b AS `b` from test.t0 join test.t1 left join (test.t2 left join (test.t3 join test.t4) on(((test.t3.a = 1) and (test.t2.b = test.t4.b))) join test.t5 left join (test.t6 join test.t7 left join test.t8 on(((test.t7.b = test.t8.b) and (test.t6.b < 10)))) on(((test.t6.b >= 2) and (test.t5.b = test.t7.b)))) on((((test.t3.b = 2) or isnull(test.t3.c)) and ((test.t6.b = 2) or isnull(test.t6.c)) and ((test.t1.b = test.t5.b) or isnull(test.t3.c) or isnull(test.t6.c) or isnull(test.t8.c)) and (test.t1.a <> 2))) join test.t9 where ((test.t0.a = 1) and (test.t0.b = test.t1.b) and ((test.t2.a >= 4) or isnull(test.t2.c)) and ((test.t3.a < 5) or isnull(test.t3.c)) and ((test.t3.b = test.t4.b) or isnull(test.t3.c) or isnull(test.t4.c)) and ((test.t5.a >= 2) or isnull(test.t5.c)) and ((test.t6.a >= 4) or isnull(test.t6.c)) and ((test.t7.a <= 2) or isnull(test.t7.c)) and ((test.t8.a < 1) or isnull(test.t8.c)) and ((test.t8.b = test.t9.b) or isnull(test.t8.c)) and (test.t9.a = 1)) CREATE INDEX idx_b ON t8(b); EXPLAIN EXTENDED SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b FROM t0,t1 LEFT JOIN ( t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b, t5 LEFT JOIN ( t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10 ) ON t6.b >= 2 AND t5.b=t7.b ) ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND (t1.a != 2), t9 WHERE t0.a=1 AND t0.b=t1.b AND (t2.a >= 4 OR t2.c IS NULL) AND (t3.a < 5 OR t3.c IS NULL) AND (t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND (t5.a >=2 OR t5.c IS NULL) AND (t6.a >=4 OR t6.c IS NULL) AND (t7.a <= 2 OR t7.c IS NULL) AND (t8.a < 1 OR t8.c IS NULL) AND (t8.b=t9.b OR t8.c IS NULL) AND (t9.a=1); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t0 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t3 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 Using where 1 SIMPLE t5 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t7 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t6 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t8 ref idx_b idx_b 5 test.t7.b 2 Using where 1 SIMPLE t9 ALL NULL NULL NULL NULL 3 Using where Warnings: Note 1003 select test.t0.a AS `a`,test.t0.b AS `b`,test.t1.a AS `a`,test.t1.b AS `b`,test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b`,test.t5.a AS `a`,test.t5.b AS `b`,test.t6.a AS `a`,test.t6.b AS `b`,test.t7.a AS `a`,test.t7.b AS `b`,test.t8.a AS `a`,test.t8.b AS `b`,test.t9.a AS `a`,test.t9.b AS `b` from test.t0 join test.t1 left join (test.t2 left join (test.t3 join test.t4) on(((test.t3.a = 1) and (test.t2.b = test.t4.b))) join test.t5 left join (test.t6 join test.t7 left join test.t8 on(((test.t7.b = test.t8.b) and (test.t6.b < 10)))) on(((test.t6.b >= 2) and (test.t5.b = test.t7.b)))) on((((test.t3.b = 2) or isnull(test.t3.c)) and ((test.t6.b = 2) or isnull(test.t6.c)) and ((test.t1.b = test.t5.b) or isnull(test.t3.c) or isnull(test.t6.c) or isnull(test.t8.c)) and (test.t1.a <> 2))) join test.t9 where ((test.t0.a = 1) and (test.t0.b = test.t1.b) and ((test.t2.a >= 4) or isnull(test.t2.c)) and ((test.t3.a < 5) or isnull(test.t3.c)) and ((test.t3.b = test.t4.b) or isnull(test.t3.c) or isnull(test.t4.c)) and ((test.t5.a >= 2) or isnull(test.t5.c)) and ((test.t6.a >= 4) or isnull(test.t6.c)) and ((test.t7.a <= 2) or isnull(test.t7.c)) and ((test.t8.a < 1) or isnull(test.t8.c)) and ((test.t8.b = test.t9.b) or isnull(test.t8.c)) and (test.t9.a = 1)) CREATE INDEX idx_b ON t1(b); CREATE INDEX idx_a ON t0(a); EXPLAIN EXTENDED SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b FROM t0,t1 LEFT JOIN ( t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b, t5 LEFT JOIN ( t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10 ) ON t6.b >= 2 AND t5.b=t7.b ) ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND (t1.a != 2), t9 WHERE t0.a=1 AND t0.b=t1.b AND (t2.a >= 4 OR t2.c IS NULL) AND (t3.a < 5 OR t3.c IS NULL) AND (t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND (t5.a >=2 OR t5.c IS NULL) AND (t6.a >=4 OR t6.c IS NULL) AND (t7.a <= 2 OR t7.c IS NULL) AND (t8.a < 1 OR t8.c IS NULL) AND (t8.b=t9.b OR t8.c IS NULL) AND (t9.a=1); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t0 ref idx_a idx_a 5 const 1 Using where 1 SIMPLE t1 ref idx_b idx_b 5 test.t0.b 2 Using where 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t3 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 Using where 1 SIMPLE t5 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t7 ALL NULL NULL NULL NULL 2 Using where 1 SIMPLE t6 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t8 ref idx_b idx_b 5 test.t7.b 2 Using where 1 SIMPLE t9 ALL NULL NULL NULL NULL 3 Using where Warnings: Note 1003 select test.t0.a AS `a`,test.t0.b AS `b`,test.t1.a AS `a`,test.t1.b AS `b`,test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b`,test.t5.a AS `a`,test.t5.b AS `b`,test.t6.a AS `a`,test.t6.b AS `b`,test.t7.a AS `a`,test.t7.b AS `b`,test.t8.a AS `a`,test.t8.b AS `b`,test.t9.a AS `a`,test.t9.b AS `b` from test.t0 join test.t1 left join (test.t2 left join (test.t3 join test.t4) on(((test.t3.a = 1) and (test.t2.b = test.t4.b))) join test.t5 left join (test.t6 join test.t7 left join test.t8 on(((test.t7.b = test.t8.b) and (test.t6.b < 10)))) on(((test.t6.b >= 2) and (test.t5.b = test.t7.b)))) on((((test.t3.b = 2) or isnull(test.t3.c)) and ((test.t6.b = 2) or isnull(test.t6.c)) and ((test.t1.b = test.t5.b) or isnull(test.t3.c) or isnull(test.t6.c) or isnull(test.t8.c)) and (test.t1.a <> 2))) join test.t9 where ((test.t0.a = 1) and (test.t0.b = test.t1.b) and ((test.t2.a >= 4) or isnull(test.t2.c)) and ((test.t3.a < 5) or isnull(test.t3.c)) and ((test.t3.b = test.t4.b) or isnull(test.t3.c) or isnull(test.t4.c)) and ((test.t5.a >= 2) or isnull(test.t5.c)) and ((test.t6.a >= 4) or isnull(test.t6.c)) and ((test.t7.a <= 2) or isnull(test.t7.c)) and ((test.t8.a < 1) or isnull(test.t8.c)) and ((test.t8.b = test.t9.b) or isnull(test.t8.c)) and (test.t9.a = 1)) SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b, t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b FROM t0,t1 LEFT JOIN ( t2 LEFT JOIN (t3, t4) ON t3.a=1 AND t2.b=t4.b, t5 LEFT JOIN ( t6, t7 LEFT JOIN t8 ON t7.b=t8.b AND t6.b < 10 ) ON t6.b >= 2 AND t5.b=t7.b ) ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND (t1.a != 2), t9 WHERE t0.a=1 AND t0.b=t1.b AND (t2.a >= 4 OR t2.c IS NULL) AND (t3.a < 5 OR t3.c IS NULL) AND (t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND (t5.a >=2 OR t5.c IS NULL) AND (t6.a >=4 OR t6.c IS NULL) AND (t7.a <= 2 OR t7.c IS NULL) AND (t8.a < 1 OR t8.c IS NULL) AND (t8.b=t9.b OR t8.c IS NULL) AND (t9.a=1); a b a b a b a b a b a b a b a b a b a b 1 2 2 2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 1 1 2 3 2 4 2 1 2 3 2 3 1 6 2 1 1 NULL NULL 1 1 1 2 3 2 4 2 1 2 3 2 3 3 NULL NULL NULL NULL NULL NULL 1 1 1 2 3 2 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 1 1 1 2 3 2 4 2 1 2 4 2 3 3 NULL NULL NULL NULL NULL NULL 1 1 1 2 3 2 5 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 1 1 1 2 3 2 5 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL 1 1 1 2 2 2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 2 1 2 3 2 4 2 1 2 3 2 3 1 6 2 1 1 NULL NULL 1 2 1 2 3 2 4 2 1 2 3 2 2 2 6 2 2 2 0 2 1 2 1 2 3 2 4 2 1 2 3 2 3 3 NULL NULL NULL NULL NULL NULL 1 2 1 2 3 2 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 1 2 1 2 3 2 4 2 1 2 4 2 2 2 6 2 2 2 0 2 1 2 1 2 3 2 4 2 1 2 4 2 3 3 NULL NULL NULL NULL NULL NULL 1 2 1 2 3 2 5 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 1 2 1 2 3 2 5 3 NULL NULL NULL NULL 2 2 6 2 2 2 0 2 1 2 1 2 3 2 5 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL 1 2 SELECT t2.a,t2.b FROM t2; a b 3 3 4 2 5 3 SELECT t3.a,t3.b FROM t3; a b 1 2 2 2 SELECT t2.a,t2.b,t3.a,t3.b FROM t2 LEFT JOIN t3 ON t2.b=t3.b WHERE t2.a = 4 OR (t2.a > 4 AND t3.a IS NULL); a b a b 4 2 1 2 4 2 2 2 5 3 NULL NULL SELECT t2.a,t2.b,t3.a,t3.b FROM t2 LEFT JOIN (t3) ON t2.b=t3.b WHERE t2.a = 4 OR (t2.a > 4 AND t3.a IS NULL); a b a b 4 2 1 2 4 2 2 2 5 3 NULL NULL ALTER TABLE t3 CHANGE COLUMN a a1 int, CHANGE COLUMN c c1 int; SELECT t2.a,t2.b,t3.a1,t3.b FROM t2 LEFT JOIN t3 ON t2.b=t3.b WHERE t2.a = 4 OR (t2.a > 4 AND t3.a1 IS NULL); a b a1 b 4 2 1 2 4 2 2 2 5 3 NULL NULL SELECT t2.a,t2.b,t3.a1,t3.b FROM t2 NATURAL LEFT JOIN t3 WHERE t2.a = 4 OR (t2.a > 4 AND t3.a1 IS NULL); a b a1 b 4 2 1 2 4 2 2 2 5 3 NULL NULL DROP TABLE t0,t1,t2,t3,t4,t5,t6,t7,t8,t9;