mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
f5a47f156b
FOUND is not a reserved keyword anymore Added Item_field::set_no_const_sub() to be able to mark fields that can't be substituted Added 'simple_select' method to be able to quickly determinate if a select_result is a normal SELECT Note that the 5.0 tree is not yet up to date: Sanja will have to fix multi-update-locks for this merge to be complete BUILD/SETUP.sh: Portability fix client/mysqltest.c: Portability fix mysql-test/r/drop.result: updated results mysql-test/r/func_str.result: New warnings (after merge) mysql-test/r/insert.result: Updated tests mysql-test/r/join_nested.result: Updated results (because of new column types in 5.0) mysql-test/r/lock_multi.result: Temporarly wrong results until Sanja fixes multi-update-lock in 5.0 mysql-test/r/multi_update.result: Temporary fix until Sanja fixes multi-update locking mysql-test/r/ps_1general.result: Update of results after merge mysql-test/r/ps_2myisam.result: Update of results after merge mysql-test/r/ps_3innodb.result: Update of results after merge mysql-test/r/ps_4heap.result: Update of results after merge mysql-test/r/ps_5merge.result: Update of results after merge mysql-test/r/ps_6bdb.result: Update of results after merge mysql-test/r/query_cache.result: Update of results after merge mysql-test/r/range.result: New results for new tests mysql-test/r/rpl_auto_increment.result: Update with new 4.0 information mysql-test/r/rpl_charset.result: After merge fixes mysql-test/r/subselect.result: After merge fixes mysql-test/r/view.result: Temporary fix until multi-update-locking is fixed mysql-test/t/drop.test: Safety fix mysql-test/t/multi_update.test: Temporary fix until multi-update-locking is fixed mysql-test/t/rpl_charset.test: More comments mysql-test/t/sp-error.test: Updated comments mysql-test/t/view.test: Temporary fix until multi-update-locking is fixed scripts/mysql_fix_privilege_tables.sh: Better error message sql-common/client.c: More debugging sql/ha_ndbcluster.cc: After merge fixes sql/handler.cc: After merge fixes sql/item.cc: Simple optimization of creating item After merge fixed Added Item_field::set_no_const_sub() to be able to mark fields that can't be substituted The problem is that if you compare a string field to a binary string, you can't replace the field with a string constant as the binary comparison may then fail (The original field value may be in a different case) sql/item.h: Added Item::set_no_const_sub() to be able to mark fields that can't be substituted sql/item_cmpfunc.cc: Mark fields compared as binary to not be substituted. sql/item_func.cc: After merge fix sql/log_event.cc: After merge fix sql/mysql_priv.h: After merge fix sql/opt_range.cc: After merge fix sql/protocol.cc: Made flags uint instead of int (as it's used as a bit mask) sql/protocol.h: Made flags uint instead of int (as it's used as a bit mask) sql/protocol_cursor.cc: Made flags uint instead of int (as it's used as a bit mask) Indentation cleanups sql/sp.cc: After merge fixes Removed compiler warnings sql/sp_head.cc: After merge fixes sql/sql_base.cc: After merge fixes Removed 'send_error' from 'insert_fields()' as the error is sent higher up sql/sql_class.cc: Give assert if set_n_backup_item_arena is used twice sql/sql_class.h: Give assert if set_n_backup_item_arena is used twice After merge fixes Added 'simple_select' method to be able to quickly determinate if a select_result is a normal SELECT sql/sql_handler.cc: After merge fixes sql/sql_parse.cc: After merge fixes sql/sql_prepare.cc: After merge fixes sql/sql_select.cc: After merge fixes Moved 'build_equal_items' to optimize_cond() (logical place) sql/sql_table.cc: After merge fixes sql/sql_trigger.cc: After merge fixes sql/sql_update.cc: After merge fixes (This should be fixed by Sanja to have lower granuality locking of tables in multi-update) sql/sql_view.cc: After merge fixes sql/sql_yacc.yy: After merge fixes Don't have FOUND as a reserved keyword
1323 lines
43 KiB
Text
1323 lines
43 KiB
Text
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`.`t4`.`b` = `test`.`t2`.`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`.`t4`.`b` = `test`.`t2`.`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`.`t4`.`b` = `test`.`t2`.`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`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) where ((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) 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`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`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`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`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`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
|
|
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`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) 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`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`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`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`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`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
|
|
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`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`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`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`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`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
|
|
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.t5.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`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`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`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`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`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
|
|
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.t5.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`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`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`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`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`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`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,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;
|
|
CREATE TABLE t1 (a int);
|
|
CREATE TABLE t2 (a int);
|
|
CREATE TABLE t3 (a int);
|
|
INSERT INTO t1 VALUES (1);
|
|
INSERT INTO t2 VALUES (2);
|
|
INSERT INTO t3 VALUES (2);
|
|
INSERT INTO t1 VALUES (2);
|
|
SELECT * FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON t2.a=t3.a) ON t1.a=t3.a;
|
|
a a a
|
|
1 NULL NULL
|
|
2 2 2
|
|
SELECT * FROM t1 LEFT JOIN t2 LEFT JOIN t3 ON t2.a=t3.a ON t1.a=t3.a;
|
|
a a a
|
|
1 NULL NULL
|
|
2 2 2
|
|
DELETE FROM t1 WHERE a=2;
|
|
SELECT * FROM t1 LEFT JOIN t2 LEFT JOIN t3 ON t2.a=t3.a ON t1.a=t3.a;
|
|
a a a
|
|
1 NULL NULL
|
|
DELETE FROM t2;
|
|
SELECT * FROM t1 LEFT JOIN t2 LEFT JOIN t3 ON t2.a=t3.a ON t1.a=t3.a;
|
|
a a a
|
|
1 NULL NULL
|
|
DROP TABLE t1,t2,t3;
|
|
CREATE TABLE t1(a int, key (a));
|
|
CREATE TABLE t2(b int, key (b));
|
|
CREATE TABLE t3(c int, key (c));
|
|
INSERT INTO t1 VALUES (NULL), (0), (1), (2), (3), (4), (5), (6), (7), (8), (9),
|
|
(10), (11), (12), (13), (14), (15), (16), (17), (18), (19);
|
|
INSERT INTO t2 VALUES (NULL), (0), (1), (2), (3), (4), (5), (6), (7), (8), (9),
|
|
(10), (11), (12), (13), (14), (15), (16), (17), (18), (19);
|
|
INSERT INTO t3 VALUES (0), (1), (2), (3), (4), (5);
|
|
EXPLAIN SELECT a, b, c FROM t1 LEFT JOIN (t2, t3) ON c < 3 and b = c;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t1 index NULL a 5 NULL 21 Using index
|
|
1 SIMPLE t3 index c c 5 NULL 6 Using index
|
|
1 SIMPLE t2 ref b b 5 test.t3.c 2 Using index
|
|
EXPLAIN SELECT a, b, c FROM t1 LEFT JOIN (t2, t3) ON b < 3 and b = c;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t1 index NULL a 5 NULL 21 Using index
|
|
1 SIMPLE t3 index c c 5 NULL 6 Using index
|
|
1 SIMPLE t2 ref b b 5 test.t3.c 2 Using index
|
|
SELECT a, b, c FROM t1 LEFT JOIN (t2, t3) ON b < 3 and b = c;
|
|
a b c
|
|
NULL 0 0
|
|
NULL 1 1
|
|
NULL 2 2
|
|
0 0 0
|
|
0 1 1
|
|
0 2 2
|
|
1 0 0
|
|
1 1 1
|
|
1 2 2
|
|
2 0 0
|
|
2 1 1
|
|
2 2 2
|
|
3 0 0
|
|
3 1 1
|
|
3 2 2
|
|
4 0 0
|
|
4 1 1
|
|
4 2 2
|
|
5 0 0
|
|
5 1 1
|
|
5 2 2
|
|
6 0 0
|
|
6 1 1
|
|
6 2 2
|
|
7 0 0
|
|
7 1 1
|
|
7 2 2
|
|
8 0 0
|
|
8 1 1
|
|
8 2 2
|
|
9 0 0
|
|
9 1 1
|
|
9 2 2
|
|
10 0 0
|
|
10 1 1
|
|
10 2 2
|
|
11 0 0
|
|
11 1 1
|
|
11 2 2
|
|
12 0 0
|
|
12 1 1
|
|
12 2 2
|
|
13 0 0
|
|
13 1 1
|
|
13 2 2
|
|
14 0 0
|
|
14 1 1
|
|
14 2 2
|
|
15 0 0
|
|
15 1 1
|
|
15 2 2
|
|
16 0 0
|
|
16 1 1
|
|
16 2 2
|
|
17 0 0
|
|
17 1 1
|
|
17 2 2
|
|
18 0 0
|
|
18 1 1
|
|
18 2 2
|
|
19 0 0
|
|
19 1 1
|
|
19 2 2
|
|
DELETE FROM t3;
|
|
EXPLAIN SELECT a, b, c FROM t1 LEFT JOIN (t2, t3) ON b < 3 and b = c;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t1 index NULL a 5 NULL 21 Using index
|
|
1 SIMPLE t3 index c c 5 NULL 0 Using index
|
|
1 SIMPLE t2 ref b b 5 test.t3.c 2 Using index
|
|
SELECT a, b, c FROM t1 LEFT JOIN (t2, t3) ON b < 3 and b = c;
|
|
a b c
|
|
NULL NULL NULL
|
|
0 NULL NULL
|
|
1 NULL NULL
|
|
2 NULL NULL
|
|
3 NULL NULL
|
|
4 NULL NULL
|
|
5 NULL NULL
|
|
6 NULL NULL
|
|
7 NULL NULL
|
|
8 NULL NULL
|
|
9 NULL NULL
|
|
10 NULL NULL
|
|
11 NULL NULL
|
|
12 NULL NULL
|
|
13 NULL NULL
|
|
14 NULL NULL
|
|
15 NULL NULL
|
|
16 NULL NULL
|
|
17 NULL NULL
|
|
18 NULL NULL
|
|
19 NULL NULL
|
|
DROP TABLE t1,t2,t3;
|