Merge
This commit is contained in:
commit
ec368ab9fa
File diff suppressed because it is too large
Load Diff
@ -81,9 +81,9 @@ WHERE t3.a=1 OR t3.c IS NULL;
|
|||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00
|
||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (flat, BNL join)
|
||||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t4 hash NULL hj_key 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
Warnings:
|
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`))
|
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`) and (`test`.`t2`.`b` is not null))) where ((`test`.`t3`.`a` = 1) or isnull(`test`.`t3`.`c`))
|
||||||
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
|
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
|
||||||
FROM t2
|
FROM t2
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
@ -157,10 +157,10 @@ WHERE t3.a>1 OR t3.c IS NULL;
|
|||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00
|
||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (flat, BNL join)
|
||||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t4 hash NULL hj_key 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
1 SIMPLE t5 ALL NULL NULL NULL NULL 3 100.00 Using join buffer (incremental, BNL join)
|
1 SIMPLE t5 ALL NULL NULL NULL NULL 3 100.00 Using join buffer (incremental, BNL join)
|
||||||
Warnings:
|
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`))
|
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`) and (`test`.`t2`.`b` is not null))) 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
|
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
|
||||||
FROM t2
|
FROM t2
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
@ -187,10 +187,10 @@ WHERE (t3.a>1 OR t3.c IS NULL) AND
|
|||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00
|
||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (flat, BNL join)
|
||||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t4 hash NULL hj_key 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
1 SIMPLE t5 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t5 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
Warnings:
|
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`)))
|
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`) and (`test`.`t2`.`b` is not null))) 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
|
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
|
||||||
FROM t2
|
FROM t2
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
@ -237,9 +237,9 @@ ON t7.b=t8.b AND t6.b < 10;
|
|||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00
|
1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00
|
||||||
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using join buffer (flat, BNL join)
|
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using join buffer (flat, BNL join)
|
||||||
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t8 hash NULL hj_key 5 test.t7.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
Warnings:
|
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`.`t6`.`b` < 10) and (`test`.`t8`.`b` = `test`.`t7`.`b`))) where 1
|
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`.`t6`.`b` < 10) and (`test`.`t8`.`b` = `test`.`t7`.`b`)) and (`test`.`t7`.`b` is not null))) where 1
|
||||||
SELECT t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
|
SELECT t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
|
||||||
FROM (t6, t7)
|
FROM (t6, t7)
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
@ -551,16 +551,16 @@ t0.b=t1.b AND
|
|||||||
(t2.a >= 4 OR t2.c IS NULL);
|
(t2.a >= 4 OR t2.c IS NULL);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t1 hash NULL hj_key 5 test.t0.b 3 100.00 Using where; Using join buffer (flat, BNLH join)
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t4 hash NULL hj_key 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
1 SIMPLE t5 ALL NULL NULL NULL NULL 3 100.00 Using join buffer (incremental, BNL join)
|
1 SIMPLE t5 ALL NULL NULL NULL NULL 3 100.00 Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t7 hash NULL hj_key 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t8 hash NULL hj_key 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
Warnings:
|
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`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`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`.`t0`.`b`) 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`)))
|
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`.`t4`.`b` = `test`.`t2`.`b`)) and (`test`.`t2`.`b` is not null))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on((((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))) and (`test`.`t5`.`b` is not null)))) on((((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)) and (`test`.`t5`.`b` is not null)))) 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`.`t0`.`b`) 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,
|
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
|
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
|
||||||
FROM t0,t1
|
FROM t0,t1
|
||||||
@ -646,17 +646,17 @@ t0.b=t1.b AND
|
|||||||
(t9.a=1);
|
(t9.a=1);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t1 hash NULL hj_key 5 test.t0.b 3 100.00 Using where; Using join buffer (flat, BNLH join)
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t4 hash NULL hj_key 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
1 SIMPLE t5 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t5 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t7 hash NULL hj_key 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t8 hash NULL hj_key 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
Warnings:
|
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`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`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`.`t0`.`b`) 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`)))
|
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`.`t4`.`b` = `test`.`t2`.`b`)) and (`test`.`t2`.`b` is not null))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on((((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))) and (`test`.`t5`.`b` is not null)))) on((((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)) and (`test`.`t5`.`b` is not null)))) 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`.`t0`.`b`) 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
|
SELECT t9.a,t9.b
|
||||||
FROM t9;
|
FROM t9;
|
||||||
a b
|
a b
|
||||||
@ -845,9 +845,9 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using join buffer (flat, BNL join)
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using join buffer (flat, BNL join)
|
||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t4 hash NULL hj_key 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
Warnings:
|
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`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) where (`test`.`t1`.`a` <= 2)
|
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`.`t2` left join (`test`.`t3` join `test`.`t4`) on((((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`)) and (`test`.`t2`.`b` is not null))) where (`test`.`t1`.`a` <= 2)
|
||||||
CREATE INDEX idx_b ON t2(b);
|
CREATE INDEX idx_b ON t2(b);
|
||||||
EXPLAIN EXTENDED
|
EXPLAIN EXTENDED
|
||||||
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
|
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
|
||||||
@ -913,17 +913,17 @@ t0.b=t1.b AND
|
|||||||
(t9.a=1);
|
(t9.a=1);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t1 hash NULL hj_key 5 test.t0.b 3 100.00 Using where; Using join buffer (flat, BNLH join)
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t4 hash NULL hj_key 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
1 SIMPLE t5 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t5 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t7 hash NULL hj_key 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t8 hash NULL hj_key 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
Warnings:
|
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`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`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`.`t0`.`b`) 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`)))
|
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`.`t4`.`b` = `test`.`t2`.`b`)) and (`test`.`t2`.`b` is not null))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on((((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))) and (`test`.`t5`.`b` is not null)))) on((((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)) and (`test`.`t5`.`b` is not null)))) 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`.`t0`.`b`) 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 t4(b);
|
||||||
CREATE INDEX idx_b ON t5(b);
|
CREATE INDEX idx_b ON t5(b);
|
||||||
EXPLAIN EXTENDED
|
EXPLAIN EXTENDED
|
||||||
@ -963,17 +963,17 @@ t0.b=t1.b AND
|
|||||||
(t9.a=1);
|
(t9.a=1);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t1 hash NULL hj_key 5 test.t0.b 3 100.00 Using where; Using join buffer (flat, BNLH join)
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BKA join)
|
1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BKA join)
|
||||||
1 SIMPLE t5 ALL idx_b NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t5 ALL idx_b NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t7 hash NULL hj_key 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t8 hash NULL hj_key 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
Warnings:
|
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`.`t4`.`b` = `test`.`t2`.`b`)) and (`test`.`t2`.`b` is not null))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`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`.`t0`.`b`) 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`)))
|
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`.`t4`.`b` = `test`.`t2`.`b`)) and (`test`.`t2`.`b` is not null))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on((((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))) and (`test`.`t5`.`b` is not null)))) on((((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)) and (`test`.`t5`.`b` is not null)))) 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`.`t0`.`b`) 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);
|
CREATE INDEX idx_b ON t8(b);
|
||||||
EXPLAIN EXTENDED
|
EXPLAIN EXTENDED
|
||||||
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
|
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
|
||||||
@ -1012,17 +1012,17 @@ t0.b=t1.b AND
|
|||||||
(t9.a=1);
|
(t9.a=1);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t1 hash NULL hj_key 5 test.t0.b 3 100.00 Using where; Using join buffer (flat, BNLH join)
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BKA join)
|
1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BKA join)
|
||||||
1 SIMPLE t5 ALL idx_b NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t5 ALL idx_b NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t7 hash NULL hj_key 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BKA join)
|
1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BKA join)
|
||||||
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
Warnings:
|
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`.`t4`.`b` = `test`.`t2`.`b`)) and (`test`.`t2`.`b` is not null))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on((((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))) and (`test`.`t5`.`b` is not null)))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`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`.`t0`.`b`) 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`)))
|
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`.`t4`.`b` = `test`.`t2`.`b`)) and (`test`.`t2`.`b` is not null))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on((((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))) and (`test`.`t5`.`b` is not null)))) on((((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)) and (`test`.`t5`.`b` is not null)))) 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`.`t0`.`b`) 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_b ON t1(b);
|
||||||
CREATE INDEX idx_a ON t0(a);
|
CREATE INDEX idx_a ON t0(a);
|
||||||
EXPLAIN EXTENDED
|
EXPLAIN EXTENDED
|
||||||
@ -1067,12 +1067,12 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BKA join)
|
1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BKA join)
|
||||||
1 SIMPLE t5 ALL idx_b NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t5 ALL idx_b NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t7 hash NULL hj_key 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
|
||||||
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BKA join)
|
1 SIMPLE t8 ref idx_b idx_b 5 test.t7.b 2 100.00 Using where; Using join buffer (incremental, BKA join)
|
||||||
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
Warnings:
|
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`.`t4`.`b` = `test`.`t2`.`b`)) and (`test`.`t2`.`b` is not null))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on((((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))) and (`test`.`t5`.`b` is not null)))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`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`.`t0`.`b`) 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`)))
|
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`.`t4`.`b` = `test`.`t2`.`b`)) and (`test`.`t2`.`b` is not null))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on((((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))) and (`test`.`t7`.`b` is not null)))) on((((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)) and (`test`.`t5`.`b` is not null)))) 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`.`t0`.`b`) 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,
|
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
|
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
|
||||||
FROM t0,t1
|
FROM t0,t1
|
||||||
@ -1324,7 +1324,7 @@ c11 c21 c31
|
|||||||
EXPLAIN SELECT * FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON c21=c31) ON c11=c21;
|
EXPLAIN SELECT * FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON c21=c31) ON c11=c21;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 2
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 0 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 5 test.t1.c11 0 Using where; Using join buffer (flat, BNLH join)
|
||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 0 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 0 Using where; Using join buffer (incremental, BNL join)
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
CREATE TABLE t1 (goods int(12) NOT NULL, price varchar(128) NOT NULL);
|
CREATE TABLE t1 (goods int(12) NOT NULL, price varchar(128) NOT NULL);
|
||||||
|
@ -319,11 +319,11 @@ Lilliana Angelovska NULL NULL
|
|||||||
explain select t1.name, t2.name, t2.id from t1 left join t2 on (t1.id = t2.owner) where t2.id is null;
|
explain select t1.name, t2.name, t2.id from t1 left join t2 on (t1.id = t2.owner) where t2.id is null;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where; Not exists; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 2 test.t1.id 3 Using where; Not exists; Using join buffer (flat, BNLH join)
|
||||||
explain select t1.name, t2.name, t2.id from t1 left join t2 on (t1.id = t2.owner) where t2.name is null;
|
explain select t1.name, t2.name, t2.id from t1 left join t2 on (t1.id = t2.owner) where t2.name is null;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 2 test.t1.id 3 Using where; Using join buffer (flat, BNLH join)
|
||||||
select count(*) from t1 left join t2 on (t1.id = t2.owner);
|
select count(*) from t1 left join t2 on (t1.id = t2.owner);
|
||||||
count(*)
|
count(*)
|
||||||
4
|
4
|
||||||
@ -339,11 +339,11 @@ Lilliana Angelovska NULL NULL
|
|||||||
explain select t1.name, t2.name, t2.id from t2 right join t1 on (t1.id = t2.owner) where t2.id is null;
|
explain select t1.name, t2.name, t2.id from t2 right join t1 on (t1.id = t2.owner) where t2.id is null;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where; Not exists; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 2 test.t1.id 3 Using where; Not exists; Using join buffer (flat, BNLH join)
|
||||||
explain select t1.name, t2.name, t2.id from t2 right join t1 on (t1.id = t2.owner) where t2.name is null;
|
explain select t1.name, t2.name, t2.id from t2 right join t1 on (t1.id = t2.owner) where t2.name is null;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 2 test.t1.id 3 Using where; Using join buffer (flat, BNLH join)
|
||||||
select count(*) from t2 right join t1 on (t1.id = t2.owner);
|
select count(*) from t2 right join t1 on (t1.id = t2.owner);
|
||||||
count(*)
|
count(*)
|
||||||
4
|
4
|
||||||
@ -695,8 +695,8 @@ a1 a2 b1 b2 c1 c2
|
|||||||
explain select * from t1 left join t2 on b1 = a1 left join t3 on c1 = a1 and b1 is null;
|
explain select * from t1 left join t2 on b1 = a1 left join t3 on c1 = a1 and b1 is null;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 4 test.t1.a1 2 Using where; Using join buffer (flat, BNLH join)
|
||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join)
|
1 SIMPLE t3 hash NULL hj_key 5 test.t1.a1 2 Using where; Using join buffer (incremental, BNLH join)
|
||||||
drop table t1, t2, t3;
|
drop table t1, t2, t3;
|
||||||
create table t1 (
|
create table t1 (
|
||||||
a int(11),
|
a int(11),
|
||||||
|
@ -1370,7 +1370,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr is null;
|
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr is null;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 12
|
1 SIMPLE t4 ALL NULL NULL NULL NULL 12
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 Using where; Not exists; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 1 test.t4.companynr 1200 Using where; Not exists; Using join buffer (flat, BNLH join)
|
||||||
select companynr,companyname from t2 left join t4 using (companynr) where companynr is null;
|
select companynr,companyname from t2 left join t4 using (companynr) where companynr is null;
|
||||||
companynr companyname
|
companynr companyname
|
||||||
select count(*) from t2 left join t4 using (companynr) where companynr is not null;
|
select count(*) from t2 left join t4 using (companynr) where companynr is not null;
|
||||||
@ -1398,39 +1398,39 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0;
|
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
|
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
|
||||||
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0;
|
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
|
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
|
||||||
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 and companynr > 0;
|
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 and companynr > 0;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
|
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
|
||||||
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 or t2.companynr is null;
|
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 or t2.companynr is null;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 12
|
1 SIMPLE t4 ALL NULL NULL NULL NULL 12
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
|
||||||
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 or t2.companynr < 0 or t4.companynr > 0;
|
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 or t2.companynr < 0 or t4.companynr > 0;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12
|
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
|
||||||
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where ifnull(t2.companynr,1)>0;
|
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where ifnull(t2.companynr,1)>0;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 12
|
1 SIMPLE t4 ALL NULL NULL NULL NULL 12
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
|
||||||
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr is null;
|
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr is null;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
|
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
|
||||||
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0 or companynr > 0;
|
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0 or companynr > 0;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
|
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
|
||||||
explain select companynr,companyname from t4 left join t2 using (companynr) where ifnull(companynr,1)>0;
|
explain select companynr,companyname from t4 left join t2 using (companynr) where ifnull(companynr,1)>0;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where
|
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
|
||||||
select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
|
select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
|
||||||
companynr companynr
|
companynr companynr
|
||||||
37 36
|
37 36
|
||||||
@ -1438,7 +1438,7 @@ companynr companynr
|
|||||||
explain select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
|
explain select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t4 index NULL PRIMARY 1 NULL 12 Using index; Using temporary
|
1 SIMPLE t4 index NULL PRIMARY 1 NULL 12 Using index; Using temporary
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 1 func 1199 Using where; Using join buffer (flat, BNLH join)
|
||||||
select t2.fld1,t2.companynr,fld3,period from t3,t2 where t2.fld1 = 38208 and t2.fld1=t3.t2nr and period = 1008 or t2.fld1 = 38008 and t2.fld1 =t3.t2nr and period = 1008;
|
select t2.fld1,t2.companynr,fld3,period from t3,t2 where t2.fld1 = 38208 and t2.fld1=t3.t2nr and period = 1008 or t2.fld1 = 38008 and t2.fld1 =t3.t2nr and period = 1008;
|
||||||
fld1 companynr fld3 period
|
fld1 companynr fld3 period
|
||||||
038008 37 reporters 1008
|
038008 37 reporters 1008
|
||||||
@ -2337,7 +2337,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE t3 system NULL NULL NULL NULL 0 const row not found
|
1 SIMPLE t3 system NULL NULL NULL NULL 0 const row not found
|
||||||
1 SIMPLE t4 const id4 NULL NULL NULL 1
|
1 SIMPLE t4 const id4 NULL NULL NULL 1
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 2
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 4 test.t1.id1 1 Using where; Using join buffer (flat, BNLH join)
|
||||||
select * from t1 left join t2 on id1 = id2 left join t3 on id1 = id3
|
select * from t1 left join t2 on id1 = id2 left join t3 on id1 = id3
|
||||||
left join t4 on id3 = id4 where id2 = 1 or id4 = 1;
|
left join t4 on id3 = id4 where id2 = 1 or id4 = 1;
|
||||||
id1 id2 id3 id4 id44
|
id1 id2 id3 id4 id44
|
||||||
@ -2916,12 +2916,12 @@ a
|
|||||||
4
|
4
|
||||||
EXPLAIN SELECT t1.a FROM t1 STRAIGHT_JOIN t2 ON t1.a=t2.a;
|
EXPLAIN SELECT t1.a FROM t1 STRAIGHT_JOIN t2 ON t1.a=t2.a;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 5
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 5 Using where
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 hash NULL hj_key 5 test.t1.a 3 Using where; Using join buffer (flat, BNLH join)
|
||||||
EXPLAIN SELECT t1.a FROM t1 INNER JOIN t2 ON t1.a=t2.a;
|
EXPLAIN SELECT t1.a FROM t1 INNER JOIN t2 ON t1.a=t2.a;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 5 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t1 hash NULL hj_key 5 test.t2.a 5 Using where; Using join buffer (flat, BNLH join)
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0;
|
select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0;
|
||||||
x'10' + 0 X'10' + 0 b'10' + 0 B'10' + 0
|
x'10' + 0 X'10' + 0 b'10' + 0 B'10' + 0
|
||||||
|
@ -1031,10 +1031,10 @@ explain select t21.* from t21,t22 where t21.a = t22.a and
|
|||||||
t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a;
|
t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY subselect2 ALL unique_key NULL NULL NULL 8 Using temporary; Using filesort
|
1 PRIMARY subselect2 ALL unique_key NULL NULL NULL 8 Using temporary; Using filesort
|
||||||
1 PRIMARY t21 ALL NULL NULL NULL NULL 26 Using where; Using join buffer (flat, BNL join)
|
1 PRIMARY t21 hash NULL hj_key 4 test.t11.a 26 Using where; Using join buffer (flat, BNLH join)
|
||||||
1 PRIMARY t22 ALL NULL NULL NULL NULL 26 Using where; Using join buffer (incremental, BNL join)
|
1 PRIMARY t22 hash NULL hj_key 4 test.t11.a 26 Using where; Using join buffer (incremental, BNLH join)
|
||||||
2 SUBQUERY t11 ALL NULL NULL NULL NULL 8 Using where
|
2 SUBQUERY t11 ALL NULL NULL NULL NULL 8 Using where
|
||||||
2 SUBQUERY t12 ALL NULL NULL NULL NULL 8 Using where; Using join buffer (flat, BNL join)
|
2 SUBQUERY t12 hash NULL hj_key 4 test.t11.a 8 Using where; Using join buffer (flat, BNLH join)
|
||||||
select t21.* from t21,t22 where t21.a = t22.a and
|
select t21.* from t21,t22 where t21.a = t22.a and
|
||||||
t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a;
|
t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a;
|
||||||
a b c
|
a b c
|
||||||
@ -1151,11 +1151,11 @@ set @@optimizer_switch='firstmatch=off,materialization=off';
|
|||||||
set @@max_heap_table_size= 16384;
|
set @@max_heap_table_size= 16384;
|
||||||
explain select count(*) from t0 A, t0 B, t0 C, t0 D where D.a in (select a from t1 E);
|
explain select count(*) from t0 A, t0 B, t0 C, t0 D where D.a in (select a from t1 E);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY E ALL NULL NULL NULL NULL 5 Start temporary
|
1 PRIMARY E ALL NULL NULL NULL NULL 5 Using where; Start temporary
|
||||||
1 PRIMARY A ALL NULL NULL NULL NULL 10 Using join buffer (flat, BNL join)
|
1 PRIMARY A ALL NULL NULL NULL NULL 10 Using join buffer (flat, BNL join)
|
||||||
1 PRIMARY B ALL NULL NULL NULL NULL 10 Using join buffer (incremental, BNL join)
|
1 PRIMARY B ALL NULL NULL NULL NULL 10 Using join buffer (incremental, BNL join)
|
||||||
1 PRIMARY C ALL NULL NULL NULL NULL 10 Using join buffer (incremental, BNL join)
|
1 PRIMARY C ALL NULL NULL NULL NULL 10 Using join buffer (incremental, BNL join)
|
||||||
1 PRIMARY D ALL NULL NULL NULL NULL 10 Using where; End temporary; Using join buffer (incremental, BNL join)
|
1 PRIMARY D hash NULL hj_key 5 test.E.a 10 Using where; End temporary; Using join buffer (incremental, BNLH join)
|
||||||
flush status;
|
flush status;
|
||||||
select count(*) from t0 A, t0 B, t0 C, t0 D where D.a in (select a from t1 E);
|
select count(*) from t0 A, t0 B, t0 C, t0 D where D.a in (select a from t1 E);
|
||||||
count(*)
|
count(*)
|
||||||
@ -1192,12 +1192,12 @@ insert into t3 select * from t1;
|
|||||||
insert into t3 values (1),(2);
|
insert into t3 values (1),(2);
|
||||||
explain select * from t2 where a in (select a from t1);
|
explain select * from t2 where a in (select a from t1);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Start temporary
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Start temporary
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where; End temporary; Using join buffer (flat, BNL join)
|
1 PRIMARY t1 hash NULL hj_key 4 test.t2.a 4 Using where; End temporary; Using join buffer (flat, BNLH join)
|
||||||
explain select * from t2 where a in (select a from t2);
|
explain select * from t2 where a in (select a from t2);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Start temporary
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Start temporary
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; End temporary; Using join buffer (flat, BNL join)
|
1 PRIMARY t2 hash NULL hj_key 5 test.t2.a 2 Using where; End temporary; Using join buffer (flat, BNLH join)
|
||||||
explain select * from t2 where a in (select a from t3);
|
explain select * from t2 where a in (select a from t3);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Start temporary
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Start temporary
|
||||||
@ -1211,8 +1211,8 @@ create table t1 (a decimal);
|
|||||||
insert into t1 values (1),(2);
|
insert into t1 values (1),(2);
|
||||||
explain select * from t1 where a in (select a from t1);
|
explain select * from t1 where a in (select a from t1);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Start temporary
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where; Start temporary
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where; End temporary; Using join buffer (flat, BNL join)
|
1 PRIMARY t1 hash NULL hj_key 6 test.t1.a 2 Using where; End temporary; Using join buffer (flat, BNLH join)
|
||||||
drop table t1;
|
drop table t1;
|
||||||
set @@optimizer_switch=@save_optimizer_switch;
|
set @@optimizer_switch=@save_optimizer_switch;
|
||||||
create table t1 (a int);
|
create table t1 (a int);
|
||||||
|
@ -138,8 +138,8 @@ a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z
|
|||||||
from t1 ot where a in (select a from t2 it);
|
from t1 ot where a in (select a from t2 it);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY subselect2 ALL unique_key NULL NULL NULL 22
|
1 PRIMARY subselect2 ALL unique_key NULL NULL NULL 22
|
||||||
1 PRIMARY ot ALL NULL NULL NULL NULL 32 Using where; Using join buffer (flat, BNL join)
|
1 PRIMARY ot hash NULL hj_key 5 test.it.a 32 Using where; Using join buffer (flat, BNLH join)
|
||||||
2 SUBQUERY it ALL NULL NULL NULL NULL 22
|
2 SUBQUERY it ALL NULL NULL NULL NULL 22 Using where
|
||||||
select
|
select
|
||||||
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z
|
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z
|
||||||
from t1 ot where a in (select a from t2 it);
|
from t1 ot where a in (select a from t2 it);
|
||||||
@ -206,8 +206,8 @@ a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z
|
|||||||
from t1 ot where a in (select a from t2 it);
|
from t1 ot where a in (select a from t2 it);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY subselect2 ALL unique_key NULL NULL NULL 22
|
1 PRIMARY subselect2 ALL unique_key NULL NULL NULL 22
|
||||||
1 PRIMARY ot ALL NULL NULL NULL NULL 52 Using where; Using join buffer (flat, BNL join)
|
1 PRIMARY ot hash NULL hj_key 5 test.it.a 52 Using where; Using join buffer (flat, BNLH join)
|
||||||
2 SUBQUERY it ALL NULL NULL NULL NULL 22
|
2 SUBQUERY it ALL NULL NULL NULL NULL 22 Using where
|
||||||
select
|
select
|
||||||
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z
|
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z
|
||||||
from t1 ot where a in (select a from t2 it);
|
from t1 ot where a in (select a from t2 it);
|
||||||
@ -588,7 +588,7 @@ explain
|
|||||||
select * from t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t3));
|
select * from t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t3));
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
1 PRIMARY t2 hash NULL hj_key 5 test.t1.a 3 Using where; Using join buffer (flat, BNLH join)
|
||||||
2 DEPENDENT SUBQUERY t3 unique_subquery PRIMARY PRIMARY 4 func 1 Using index
|
2 DEPENDENT SUBQUERY t3 unique_subquery PRIMARY PRIMARY 4 func 1 Using index
|
||||||
drop table t0, t1, t2, t3;
|
drop table t0, t1, t2, t3;
|
||||||
create table t1 (a int);
|
create table t1 (a int);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
set @save_optimizer_switch_jcl6=@@optimizer_switch;
|
set @save_optimizer_switch_jcl6=@@optimizer_switch;
|
||||||
set @@optimizer_switch='semijoin_with_cache=on';
|
set @@optimizer_switch='semijoin_with_cache=on';
|
||||||
set @@optimizer_switch='outer_join_with_cache=on';
|
set @@optimizer_switch='outer_join_with_cache=on';
|
||||||
|
set @@optimizer_switch='join_cache_hashed=off';
|
||||||
set join_cache_level=6;
|
set join_cache_level=6;
|
||||||
show variables like 'join_cache_level';
|
show variables like 'join_cache_level';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
|
@ -2656,7 +2656,7 @@ SELECT t1.pk FROM t1,t2
|
|||||||
WHERE t1.pk = t2.pk AND t2.pk <> 8;
|
WHERE t1.pk = t2.pk AND t2.pk <> 8;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index PRIMARY PRIMARY 4 NULL 11 Using where; Using index
|
1 SIMPLE t1 index PRIMARY PRIMARY 4 NULL 11 Using where; Using index
|
||||||
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.pk 1 Using index; Using join buffer (flat, BNLH join)
|
1 SIMPLE t2 hash PRIMARY PRIMARY 4 test.t1.pk 13 Using index; Using join buffer (flat, BNLH join)
|
||||||
SELECT t1.pk FROM t1,t2
|
SELECT t1.pk FROM t1,t2
|
||||||
WHERE t1.pk = t2.pk AND t2.pk <> 8;
|
WHERE t1.pk = t2.pk AND t2.pk <> 8;
|
||||||
pk
|
pk
|
||||||
|
@ -58,6 +58,60 @@ SELECT City.Name, Country.Name, CountryLanguage.Language
|
|||||||
set join_cache_level=2;
|
set join_cache_level=2;
|
||||||
show variables like 'join_cache_level';
|
show variables like 'join_cache_level';
|
||||||
|
|
||||||
|
EXPLAIN
|
||||||
|
SELECT City.Name, Country.Name FROM City,Country
|
||||||
|
WHERE City.Country=Country.Code AND
|
||||||
|
Country.Name LIKE 'L%' AND City.Population > 100000;
|
||||||
|
|
||||||
|
SELECT City.Name, Country.Name FROM City,Country
|
||||||
|
WHERE City.Country=Country.Code AND
|
||||||
|
Country.Name LIKE 'L%' AND City.Population > 100000;
|
||||||
|
|
||||||
|
EXPLAIN
|
||||||
|
SELECT City.Name, Country.Name, CountryLanguage.Language
|
||||||
|
FROM City,Country,CountryLanguage
|
||||||
|
WHERE City.Country=Country.Code AND
|
||||||
|
CountryLanguage.Country=Country.Code AND
|
||||||
|
City.Name LIKE 'L%' AND Country.Population > 3000000 AND
|
||||||
|
CountryLanguage.Percentage > 50;
|
||||||
|
|
||||||
|
SELECT City.Name, Country.Name, CountryLanguage.Language
|
||||||
|
FROM City,Country,CountryLanguage
|
||||||
|
WHERE City.Country=Country.Code AND
|
||||||
|
CountryLanguage.Country=Country.Code AND
|
||||||
|
City.Name LIKE 'L%' AND Country.Population > 3000000 AND
|
||||||
|
CountryLanguage.Percentage > 50;
|
||||||
|
|
||||||
|
set join_cache_level=3;
|
||||||
|
show variables like 'join_cache_level';
|
||||||
|
|
||||||
|
EXPLAIN
|
||||||
|
SELECT City.Name, Country.Name FROM City,Country
|
||||||
|
WHERE City.Country=Country.Code AND
|
||||||
|
Country.Name LIKE 'L%' AND City.Population > 100000;
|
||||||
|
|
||||||
|
SELECT City.Name, Country.Name FROM City,Country
|
||||||
|
WHERE City.Country=Country.Code AND
|
||||||
|
Country.Name LIKE 'L%' AND City.Population > 100000;
|
||||||
|
|
||||||
|
EXPLAIN
|
||||||
|
SELECT City.Name, Country.Name, CountryLanguage.Language
|
||||||
|
FROM City,Country,CountryLanguage
|
||||||
|
WHERE City.Country=Country.Code AND
|
||||||
|
CountryLanguage.Country=Country.Code AND
|
||||||
|
City.Name LIKE 'L%' AND Country.Population > 3000000 AND
|
||||||
|
CountryLanguage.Percentage > 50;
|
||||||
|
|
||||||
|
SELECT City.Name, Country.Name, CountryLanguage.Language
|
||||||
|
FROM City,Country,CountryLanguage
|
||||||
|
WHERE City.Country=Country.Code AND
|
||||||
|
CountryLanguage.Country=Country.Code AND
|
||||||
|
City.Name LIKE 'L%' AND Country.Population > 3000000 AND
|
||||||
|
CountryLanguage.Percentage > 50;
|
||||||
|
|
||||||
|
set join_cache_level=4;
|
||||||
|
show variables like 'join_cache_level';
|
||||||
|
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT City.Name, Country.Name FROM City,Country
|
SELECT City.Name, Country.Name FROM City,Country
|
||||||
WHERE City.Country=Country.Code AND
|
WHERE City.Country=Country.Code AND
|
||||||
@ -116,6 +170,60 @@ SELECT City.Name, Country.Name, CountryLanguage.Language
|
|||||||
set join_cache_level=2;
|
set join_cache_level=2;
|
||||||
show variables like 'join_cache_level';
|
show variables like 'join_cache_level';
|
||||||
|
|
||||||
|
EXPLAIN
|
||||||
|
SELECT City.Name, Country.Name FROM City,Country
|
||||||
|
WHERE City.Country=Country.Code AND
|
||||||
|
Country.Name LIKE 'L%' AND City.Population > 100000;
|
||||||
|
|
||||||
|
SELECT City.Name, Country.Name FROM City,Country
|
||||||
|
WHERE City.Country=Country.Code AND
|
||||||
|
Country.Name LIKE 'L%' AND City.Population > 100000;
|
||||||
|
|
||||||
|
EXPLAIN
|
||||||
|
SELECT City.Name, Country.Name, CountryLanguage.Language
|
||||||
|
FROM City,Country,CountryLanguage
|
||||||
|
WHERE City.Country=Country.Code AND
|
||||||
|
CountryLanguage.Country=Country.Code AND
|
||||||
|
City.Name LIKE 'L%' AND Country.Population > 3000000 AND
|
||||||
|
CountryLanguage.Percentage > 50;
|
||||||
|
|
||||||
|
SELECT City.Name, Country.Name, CountryLanguage.Language
|
||||||
|
FROM City,Country,CountryLanguage
|
||||||
|
WHERE City.Country=Country.Code AND
|
||||||
|
CountryLanguage.Country=Country.Code AND
|
||||||
|
City.Name LIKE 'L%' AND Country.Population > 3000000 AND
|
||||||
|
CountryLanguage.Percentage > 50;
|
||||||
|
|
||||||
|
set join_cache_level=3;
|
||||||
|
show variables like 'join_cache_level';
|
||||||
|
|
||||||
|
EXPLAIN
|
||||||
|
SELECT City.Name, Country.Name FROM City,Country
|
||||||
|
WHERE City.Country=Country.Code AND
|
||||||
|
Country.Name LIKE 'L%' AND City.Population > 100000;
|
||||||
|
|
||||||
|
SELECT City.Name, Country.Name FROM City,Country
|
||||||
|
WHERE City.Country=Country.Code AND
|
||||||
|
Country.Name LIKE 'L%' AND City.Population > 100000;
|
||||||
|
|
||||||
|
EXPLAIN
|
||||||
|
SELECT City.Name, Country.Name, CountryLanguage.Language
|
||||||
|
FROM City,Country,CountryLanguage
|
||||||
|
WHERE City.Country=Country.Code AND
|
||||||
|
CountryLanguage.Country=Country.Code AND
|
||||||
|
City.Name LIKE 'L%' AND Country.Population > 3000000 AND
|
||||||
|
CountryLanguage.Percentage > 50;
|
||||||
|
|
||||||
|
SELECT City.Name, Country.Name, CountryLanguage.Language
|
||||||
|
FROM City,Country,CountryLanguage
|
||||||
|
WHERE City.Country=Country.Code AND
|
||||||
|
CountryLanguage.Country=Country.Code AND
|
||||||
|
City.Name LIKE 'L%' AND Country.Population > 3000000 AND
|
||||||
|
CountryLanguage.Percentage > 50;
|
||||||
|
|
||||||
|
set join_cache_level=4;
|
||||||
|
show variables like 'join_cache_level';
|
||||||
|
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT City.Name, Country.Name FROM City,Country
|
SELECT City.Name, Country.Name FROM City,Country
|
||||||
WHERE City.Country=Country.Code AND
|
WHERE City.Country=Country.Code AND
|
||||||
@ -2642,13 +2750,13 @@ SET SESSION optimizer_switch = 'outer_join_with_cache=on';
|
|||||||
|
|
||||||
SET SESSION join_cache_level = 6;
|
SET SESSION join_cache_level = 6;
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM t1 LEFT JOIN t2 JOIN t3 ON t3.a3 = t2.a2 ON t3.b3 <> 0 ;
|
SELECT * FROM t1 LEFT JOIN t2 JOIN t3 ON t3.a3 = t2.a2 ON t3.b3 <> 0;
|
||||||
SELECT * FROM t1 LEFT JOIN t2 JOIN t3 ON t3.a3 = t2.a2 ON t3.b3 <> 0 ;
|
SELECT * FROM t1 LEFT JOIN t2 JOIN t3 ON t3.a3 = t2.a2 ON t3.b3 <> 0;
|
||||||
|
|
||||||
SET SESSION join_cache_level = 5;
|
SET SESSION join_cache_level = 5;
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM t1 LEFT JOIN t2 JOIN t3 ON t3.a3 = t2.a2 ON t3.b3 <> 0 ;
|
SELECT * FROM t1 LEFT JOIN t2 JOIN t3 ON t3.a3 = t2.a2 ON t3.b3 <> 0;
|
||||||
SELECT * FROM t1 LEFT JOIN t2 JOIN t3 ON t3.a3 = t2.a2 ON t3.b3 <> 0 ;
|
SELECT * FROM t1 LEFT JOIN t2 JOIN t3 ON t3.a3 = t2.a2 ON t3.b3 <> 0;
|
||||||
|
|
||||||
SET SESSION optimizer_switch = 'outer_join_with_cache=off';
|
SET SESSION optimizer_switch = 'outer_join_with_cache=off';
|
||||||
SET SESSION join_cache_level = DEFAULT;
|
SET SESSION join_cache_level = DEFAULT;
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
set @save_optimizer_switch_jcl6=@@optimizer_switch;
|
set @save_optimizer_switch_jcl6=@@optimizer_switch;
|
||||||
set @@optimizer_switch='semijoin_with_cache=on';
|
set @@optimizer_switch='semijoin_with_cache=on';
|
||||||
set @@optimizer_switch='outer_join_with_cache=on';
|
set @@optimizer_switch='outer_join_with_cache=on';
|
||||||
|
set @@optimizer_switch='join_cache_hashed=off';
|
||||||
|
|
||||||
set join_cache_level=6;
|
set join_cache_level=6;
|
||||||
show variables like 'join_cache_level';
|
show variables like 'join_cache_level';
|
||||||
|
@ -279,15 +279,12 @@ Item *make_cond_remainder(Item *cond, bool exclude_index)
|
|||||||
tab A join tab that has tab->table->file and its condition
|
tab A join tab that has tab->table->file and its condition
|
||||||
in tab->select_cond
|
in tab->select_cond
|
||||||
keyno Index for which extract and push the condition
|
keyno Index for which extract and push the condition
|
||||||
other_tbls_ok TRUE <=> Fields of other non-const tables are allowed
|
|
||||||
factor_out TRUE <=> Factor out the extracted condition
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
Try to extract and push the index condition down to table handler
|
Try to extract and push the index condition down to table handler
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void push_index_cond(JOIN_TAB *tab, uint keyno, bool other_tbls_ok,
|
void push_index_cond(JOIN_TAB *tab, uint keyno)
|
||||||
bool factor_out)
|
|
||||||
{
|
{
|
||||||
DBUG_ENTER("push_index_cond");
|
DBUG_ENTER("push_index_cond");
|
||||||
Item *idx_cond;
|
Item *idx_cond;
|
||||||
@ -320,7 +317,7 @@ void push_index_cond(JOIN_TAB *tab, uint keyno, bool other_tbls_ok,
|
|||||||
print_where(tab->select_cond, "full cond", QT_ORDINARY););
|
print_where(tab->select_cond, "full cond", QT_ORDINARY););
|
||||||
|
|
||||||
idx_cond= make_cond_for_index(tab->select_cond, tab->table, keyno,
|
idx_cond= make_cond_for_index(tab->select_cond, tab->table, keyno,
|
||||||
other_tbls_ok);
|
tab->icp_other_tables_ok);
|
||||||
|
|
||||||
DBUG_EXECUTE("where",
|
DBUG_EXECUTE("where",
|
||||||
print_where(idx_cond, "idx cond", QT_ORDINARY););
|
print_where(idx_cond, "idx cond", QT_ORDINARY););
|
||||||
@ -339,10 +336,8 @@ void push_index_cond(JOIN_TAB *tab, uint keyno, bool other_tbls_ok,
|
|||||||
/*
|
/*
|
||||||
if cache is used then the value is TRUE only
|
if cache is used then the value is TRUE only
|
||||||
for BKA[_UNIQUE] cache (see check_join_cache_usage func).
|
for BKA[_UNIQUE] cache (see check_join_cache_usage func).
|
||||||
In this case other_tbls_ok is an equivalent of
|
|
||||||
cache->is_key_access().
|
|
||||||
*/
|
*/
|
||||||
other_tbls_ok &&
|
tab->icp_other_tables_ok &&
|
||||||
(idx_cond->used_tables() &
|
(idx_cond->used_tables() &
|
||||||
~(tab->table->map | tab->join->const_table_map)))
|
~(tab->table->map | tab->join->const_table_map)))
|
||||||
tab->cache_idx_cond= idx_cond;
|
tab->cache_idx_cond= idx_cond;
|
||||||
@ -360,7 +355,8 @@ void push_index_cond(JOIN_TAB *tab, uint keyno, bool other_tbls_ok,
|
|||||||
if (idx_remainder_cond != idx_cond)
|
if (idx_remainder_cond != idx_cond)
|
||||||
tab->ref.disable_cache= TRUE;
|
tab->ref.disable_cache= TRUE;
|
||||||
|
|
||||||
Item *row_cond= factor_out ? make_cond_remainder(tab->select_cond, TRUE) :
|
Item *row_cond= tab->idx_cond_fact_out ?
|
||||||
|
make_cond_remainder(tab->select_cond, TRUE) :
|
||||||
tab->pre_idx_push_select_cond;
|
tab->pre_idx_push_select_cond;
|
||||||
|
|
||||||
DBUG_EXECUTE("where",
|
DBUG_EXECUTE("where",
|
||||||
|
@ -1326,16 +1326,21 @@ static uint get_tmp_table_rec_length(List<Item> &items)
|
|||||||
bool find_eq_ref_candidate(TABLE *table, table_map sj_inner_tables)
|
bool find_eq_ref_candidate(TABLE *table, table_map sj_inner_tables)
|
||||||
{
|
{
|
||||||
KEYUSE *keyuse= table->reginfo.join_tab->keyuse;
|
KEYUSE *keyuse= table->reginfo.join_tab->keyuse;
|
||||||
uint key;
|
|
||||||
|
|
||||||
if (keyuse)
|
if (keyuse)
|
||||||
{
|
{
|
||||||
while (1) /* For each key */
|
do
|
||||||
{
|
{
|
||||||
key= keyuse->key;
|
uint key= keyuse->key;
|
||||||
KEY *keyinfo= table->key_info + key;
|
KEY *keyinfo;
|
||||||
key_part_map bound_parts= 0;
|
key_part_map bound_parts= 0;
|
||||||
if (keyinfo->flags & HA_NOSAME)
|
bool is_excluded_key= keyuse->is_for_hash_join();
|
||||||
|
if (!is_excluded_key)
|
||||||
|
{
|
||||||
|
keyinfo= table->key_info + key;
|
||||||
|
is_excluded_key= !test(keyinfo->flags & HA_NOSAME);
|
||||||
|
}
|
||||||
|
if (!is_excluded_key)
|
||||||
{
|
{
|
||||||
do /* For all equalities on all key parts */
|
do /* For all equalities on all key parts */
|
||||||
{
|
{
|
||||||
@ -1350,20 +1355,15 @@ bool find_eq_ref_candidate(TABLE *table, table_map sj_inner_tables)
|
|||||||
|
|
||||||
if (bound_parts == PREV_BITS(uint, keyinfo->key_parts))
|
if (bound_parts == PREV_BITS(uint, keyinfo->key_parts))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
if (keyuse->table != table)
|
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
keyuse++;
|
keyuse++;
|
||||||
if (keyuse->table != table)
|
} while (keyuse->key == key && keyuse->table == table);
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
while (keyuse->key == key);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
} while (keyuse->table == table);
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -1060,9 +1060,8 @@ bool JOIN_CACHE::check_emb_key_usage()
|
|||||||
CACHE_FIELD *copy;
|
CACHE_FIELD *copy;
|
||||||
CACHE_FIELD *copy_end;
|
CACHE_FIELD *copy_end;
|
||||||
uint len= 0;
|
uint len= 0;
|
||||||
TABLE *table= join_tab->table;
|
|
||||||
TABLE_REF *ref= &join_tab->ref;
|
TABLE_REF *ref= &join_tab->ref;
|
||||||
KEY *keyinfo= table->key_info+ref->key;
|
KEY *keyinfo= join_tab->get_keyinfo_by_key_no(ref->key);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
If some of the key arguments are not from the local cache the key
|
If some of the key arguments are not from the local cache the key
|
||||||
@ -2528,7 +2527,7 @@ int JOIN_CACHE_HASHED::init()
|
|||||||
pack_length+= get_size_of_rec_offset();
|
pack_length+= get_size_of_rec_offset();
|
||||||
pack_length_with_blob_ptrs+= get_size_of_rec_offset();
|
pack_length_with_blob_ptrs+= get_size_of_rec_offset();
|
||||||
|
|
||||||
ref_key_info= join_tab->table->key_info+join_tab->ref.key;
|
ref_key_info= join_tab->get_keyinfo_by_key_no(join_tab->ref.key);
|
||||||
ref_used_key_parts= join_tab->ref.key_parts;
|
ref_used_key_parts= join_tab->ref.key_parts;
|
||||||
|
|
||||||
hash_func= &JOIN_CACHE_HASHED::get_hash_idx_simple;
|
hash_func= &JOIN_CACHE_HASHED::get_hash_idx_simple;
|
||||||
@ -3437,7 +3436,7 @@ uchar *JOIN_CACHE_BNLH::get_matching_chain_by_join_key()
|
|||||||
uchar *key_ref_ptr;
|
uchar *key_ref_ptr;
|
||||||
TABLE *table= join_tab->table;
|
TABLE *table= join_tab->table;
|
||||||
TABLE_REF *ref= &join_tab->ref;
|
TABLE_REF *ref= &join_tab->ref;
|
||||||
KEY *keyinfo= table->key_info+ref->key;
|
KEY *keyinfo= join_tab->get_keyinfo_by_key_no(ref->key);
|
||||||
/* Build the join key value out of the record in the record buffer */
|
/* Build the join key value out of the record in the record buffer */
|
||||||
key_copy(key_buff, table->record[0], keyinfo, key_length, TRUE);
|
key_copy(key_buff, table->record[0], keyinfo, key_length, TRUE);
|
||||||
/* Look for this key in the join buffer */
|
/* Look for this key in the join buffer */
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -39,6 +39,11 @@
|
|||||||
/* Values in optimize */
|
/* Values in optimize */
|
||||||
#define KEY_OPTIMIZE_EXISTS 1
|
#define KEY_OPTIMIZE_EXISTS 1
|
||||||
#define KEY_OPTIMIZE_REF_OR_NULL 2
|
#define KEY_OPTIMIZE_REF_OR_NULL 2
|
||||||
|
#define KEY_OPTIMIZE_EQ 4
|
||||||
|
|
||||||
|
inline uint get_hash_join_key_no() { return MAX_KEY; }
|
||||||
|
|
||||||
|
inline bool is_hash_join_key_no(uint key) { return key == MAX_KEY; }
|
||||||
|
|
||||||
typedef struct keyuse_t {
|
typedef struct keyuse_t {
|
||||||
TABLE *table;
|
TABLE *table;
|
||||||
@ -68,6 +73,8 @@ typedef struct keyuse_t {
|
|||||||
MAX_UINT Otherwise
|
MAX_UINT Otherwise
|
||||||
*/
|
*/
|
||||||
uint sj_pred_no;
|
uint sj_pred_no;
|
||||||
|
|
||||||
|
bool is_for_hash_join() { return is_hash_join_key_no(key); }
|
||||||
} KEYUSE;
|
} KEYUSE;
|
||||||
|
|
||||||
class store_key;
|
class store_key;
|
||||||
@ -127,7 +134,8 @@ typedef struct st_table_ref
|
|||||||
*/
|
*/
|
||||||
enum join_type { JT_UNKNOWN,JT_SYSTEM,JT_CONST,JT_EQ_REF,JT_REF,JT_MAYBE_REF,
|
enum join_type { JT_UNKNOWN,JT_SYSTEM,JT_CONST,JT_EQ_REF,JT_REF,JT_MAYBE_REF,
|
||||||
JT_ALL, JT_RANGE, JT_NEXT, JT_FT, JT_REF_OR_NULL,
|
JT_ALL, JT_RANGE, JT_NEXT, JT_FT, JT_REF_OR_NULL,
|
||||||
JT_UNIQUE_SUBQUERY, JT_INDEX_SUBQUERY, JT_INDEX_MERGE};
|
JT_UNIQUE_SUBQUERY, JT_INDEX_SUBQUERY, JT_INDEX_MERGE,
|
||||||
|
JT_HASH};
|
||||||
|
|
||||||
class JOIN;
|
class JOIN;
|
||||||
|
|
||||||
@ -159,6 +167,8 @@ typedef struct st_join_table {
|
|||||||
st_join_table() {} /* Remove gcc warning */
|
st_join_table() {} /* Remove gcc warning */
|
||||||
TABLE *table;
|
TABLE *table;
|
||||||
KEYUSE *keyuse; /**< pointer to first used key */
|
KEYUSE *keyuse; /**< pointer to first used key */
|
||||||
|
KEY *hj_key; /**< descriptor of the used best hash join key
|
||||||
|
not supported by any index */
|
||||||
SQL_SELECT *select;
|
SQL_SELECT *select;
|
||||||
COND *select_cond;
|
COND *select_cond;
|
||||||
COND *on_precond; /**< part of on condition to check before
|
COND *on_precond; /**< part of on condition to check before
|
||||||
@ -241,7 +251,15 @@ typedef struct st_join_table {
|
|||||||
*/
|
*/
|
||||||
ha_rows limit;
|
ha_rows limit;
|
||||||
TABLE_REF ref;
|
TABLE_REF ref;
|
||||||
|
/* TRUE <=> condition pushdown supports other tables presence */
|
||||||
|
bool icp_other_tables_ok;
|
||||||
|
/*
|
||||||
|
TRUE <=> condition pushed to the index has to be factored out of
|
||||||
|
the condition pushed to the table
|
||||||
|
*/
|
||||||
|
bool idx_cond_fact_out;
|
||||||
bool use_join_cache;
|
bool use_join_cache;
|
||||||
|
uint used_join_cache_level;
|
||||||
ulong join_buffer_size_limit;
|
ulong join_buffer_size_limit;
|
||||||
JOIN_CACHE *cache;
|
JOIN_CACHE *cache;
|
||||||
/*
|
/*
|
||||||
@ -408,6 +426,11 @@ typedef struct st_join_table {
|
|||||||
double get_partial_join_cardinality() { return partial_join_cardinality; }
|
double get_partial_join_cardinality() { return partial_join_cardinality; }
|
||||||
bool hash_join_is_possible();
|
bool hash_join_is_possible();
|
||||||
int make_scan_filter();
|
int make_scan_filter();
|
||||||
|
bool is_ref_for_hash_join() { return is_hash_join_key_no(ref.key); }
|
||||||
|
KEY *get_keyinfo_by_key_no(uint key)
|
||||||
|
{
|
||||||
|
return (is_hash_join_key_no(key) ? hj_key : table->key_info+key);
|
||||||
|
}
|
||||||
} JOIN_TAB;
|
} JOIN_TAB;
|
||||||
|
|
||||||
|
|
||||||
@ -681,6 +704,15 @@ public:
|
|||||||
Item *tmp_having; ///< To store having when processed temporary table
|
Item *tmp_having; ///< To store having when processed temporary table
|
||||||
Item *having_history; ///< Store having for explain
|
Item *having_history; ///< Store having for explain
|
||||||
ulonglong select_options;
|
ulonglong select_options;
|
||||||
|
/*
|
||||||
|
Bitmap of allowed types of the join caches that
|
||||||
|
can be used for join operations
|
||||||
|
*/
|
||||||
|
uint allowed_join_cache_types;
|
||||||
|
bool allowed_semijoin_with_cache;
|
||||||
|
bool allowed_outer_join_with_cache;
|
||||||
|
/* Maximum level of the join caches that can be used for join operations */
|
||||||
|
uint max_allowed_join_cache_level;
|
||||||
select_result *result;
|
select_result *result;
|
||||||
TMP_TABLE_PARAM tmp_table_param;
|
TMP_TABLE_PARAM tmp_table_param;
|
||||||
MYSQL_LOCK *lock;
|
MYSQL_LOCK *lock;
|
||||||
@ -947,6 +979,12 @@ public:
|
|||||||
bool shrink_join_buffers(JOIN_TAB *jt,
|
bool shrink_join_buffers(JOIN_TAB *jt,
|
||||||
ulonglong curr_space,
|
ulonglong curr_space,
|
||||||
ulonglong needed_space);
|
ulonglong needed_space);
|
||||||
|
void set_allowed_join_cache_types();
|
||||||
|
bool is_allowed_hash_join_access()
|
||||||
|
{
|
||||||
|
return test(allowed_join_cache_types & JOIN_CACHE_HASHED_BIT) &&
|
||||||
|
max_allowed_join_cache_level > JOIN_CACHE_HASHED_BIT;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
@ -1223,8 +1261,7 @@ inline bool optimizer_flag(THD *thd, uint flag)
|
|||||||
void eliminate_tables(JOIN *join);
|
void eliminate_tables(JOIN *join);
|
||||||
|
|
||||||
/* Index Condition Pushdown entry point function */
|
/* Index Condition Pushdown entry point function */
|
||||||
void push_index_cond(JOIN_TAB *tab, uint keyno, bool other_tbls_ok,
|
void push_index_cond(JOIN_TAB *tab, uint keyno);
|
||||||
bool factor_out);
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
Temporary table support for SQL Runtime
|
Temporary table support for SQL Runtime
|
||||||
|
94
sql/table.cc
94
sql/table.cc
@ -2342,7 +2342,7 @@ partititon_err:
|
|||||||
/* Allocate bitmaps */
|
/* Allocate bitmaps */
|
||||||
|
|
||||||
bitmap_size= share->column_bitmap_size;
|
bitmap_size= share->column_bitmap_size;
|
||||||
if (!(bitmaps= (uchar*) alloc_root(&outparam->mem_root, bitmap_size*4)))
|
if (!(bitmaps= (uchar*) alloc_root(&outparam->mem_root, bitmap_size*5)))
|
||||||
goto err;
|
goto err;
|
||||||
bitmap_init(&outparam->def_read_set,
|
bitmap_init(&outparam->def_read_set,
|
||||||
(my_bitmap_map*) bitmaps, share->fields, FALSE);
|
(my_bitmap_map*) bitmaps, share->fields, FALSE);
|
||||||
@ -2352,6 +2352,8 @@ partititon_err:
|
|||||||
(my_bitmap_map*) (bitmaps+bitmap_size*2), share->fields, FALSE);
|
(my_bitmap_map*) (bitmaps+bitmap_size*2), share->fields, FALSE);
|
||||||
bitmap_init(&outparam->tmp_set,
|
bitmap_init(&outparam->tmp_set,
|
||||||
(my_bitmap_map*) (bitmaps+bitmap_size*3), share->fields, FALSE);
|
(my_bitmap_map*) (bitmaps+bitmap_size*3), share->fields, FALSE);
|
||||||
|
bitmap_init(&outparam->eq_join_set,
|
||||||
|
(my_bitmap_map*) (bitmaps+bitmap_size*4), share->fields, FALSE);
|
||||||
outparam->default_column_bitmaps();
|
outparam->default_column_bitmaps();
|
||||||
|
|
||||||
/* The table struct is now initialized; Open the table */
|
/* The table struct is now initialized; Open the table */
|
||||||
@ -5203,6 +5205,52 @@ bool TABLE::alloc_keys(uint key_count)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TABLE::create_key_part_by_field(KEY *keyinfo,
|
||||||
|
KEY_PART_INFO *key_part_info,
|
||||||
|
Field *field)
|
||||||
|
{
|
||||||
|
field->flags|= PART_KEY_FLAG;
|
||||||
|
key_part_info->null_bit= field->null_bit;
|
||||||
|
key_part_info->null_offset= (uint) (field->null_ptr -
|
||||||
|
(uchar*) record[0]);
|
||||||
|
key_part_info->field= field;
|
||||||
|
key_part_info->offset= field->offset(record[0]);
|
||||||
|
key_part_info->length= (uint16) field->pack_length();
|
||||||
|
keyinfo->key_length+= key_part_info->length;
|
||||||
|
key_part_info->key_part_flag= 0;
|
||||||
|
/* TODO:
|
||||||
|
The below method of computing the key format length of the
|
||||||
|
key part is a copy/paste from opt_range.cc, and table.cc.
|
||||||
|
This should be factored out, e.g. as a method of Field.
|
||||||
|
In addition it is not clear if any of the Field::*_length
|
||||||
|
methods is supposed to compute the same length. If so, it
|
||||||
|
might be reused.
|
||||||
|
*/
|
||||||
|
key_part_info->store_length= key_part_info->length;
|
||||||
|
|
||||||
|
if (field->real_maybe_null())
|
||||||
|
{
|
||||||
|
key_part_info->store_length+= HA_KEY_NULL_LENGTH;
|
||||||
|
keyinfo->key_length+= HA_KEY_NULL_LENGTH;
|
||||||
|
}
|
||||||
|
if (field->type() == MYSQL_TYPE_BLOB ||
|
||||||
|
field->real_type() == MYSQL_TYPE_VARCHAR)
|
||||||
|
{
|
||||||
|
key_part_info->store_length+= HA_KEY_BLOB_LENGTH;
|
||||||
|
keyinfo->key_length+= HA_KEY_BLOB_LENGTH; // ???
|
||||||
|
key_part_info->key_part_flag|=
|
||||||
|
field->type() == MYSQL_TYPE_BLOB ? HA_BLOB_PART: HA_VAR_LENGTH_PART;
|
||||||
|
}
|
||||||
|
|
||||||
|
key_part_info->type= (uint8) field->key_type();
|
||||||
|
key_part_info->key_type =
|
||||||
|
((ha_base_keytype) key_part_info->type == HA_KEYTYPE_TEXT ||
|
||||||
|
(ha_base_keytype) key_part_info->type == HA_KEYTYPE_VARTEXT1 ||
|
||||||
|
(ha_base_keytype) key_part_info->type == HA_KEYTYPE_VARTEXT2) ?
|
||||||
|
0 : FIELDFLAG_BINARY;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Add a key to a temporary table
|
Add a key to a temporary table
|
||||||
|
|
||||||
@ -5253,54 +5301,18 @@ bool TABLE::add_tmp_key(uint key, uint key_parts,
|
|||||||
if (!keyinfo->rec_per_key)
|
if (!keyinfo->rec_per_key)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
bzero(keyinfo->rec_per_key, sizeof(ulong)*key_parts);
|
bzero(keyinfo->rec_per_key, sizeof(ulong)*key_parts);
|
||||||
|
|
||||||
for (i= 0; i < key_parts; i++)
|
for (i= 0; i < key_parts; i++)
|
||||||
{
|
{
|
||||||
reg_field= field + next_field_no(arg);
|
reg_field= field + next_field_no(arg);
|
||||||
if (key_start)
|
if (key_start)
|
||||||
(*reg_field)->key_start.set_bit(key);
|
(*reg_field)->key_start.set_bit(key);
|
||||||
key_start= FALSE;
|
|
||||||
(*reg_field)->part_of_key.set_bit(key);
|
(*reg_field)->part_of_key.set_bit(key);
|
||||||
(*reg_field)->flags|= PART_KEY_FLAG;
|
create_key_part_by_field(keyinfo, key_part_info, *reg_field);
|
||||||
key_part_info->null_bit= (*reg_field)->null_bit;
|
key_start= FALSE;
|
||||||
key_part_info->null_offset= (uint) ((*reg_field)->null_ptr -
|
|
||||||
(uchar*) record[0]);
|
|
||||||
key_part_info->field= *reg_field;
|
|
||||||
key_part_info->offset= (*reg_field)->offset(record[0]);
|
|
||||||
key_part_info->length= (uint16) (*reg_field)->pack_length();
|
|
||||||
keyinfo->key_length+= key_part_info->length;
|
|
||||||
key_part_info->key_part_flag= 0;
|
|
||||||
/* TODO:
|
|
||||||
The below method of computing the key format length of the
|
|
||||||
key part is a copy/paste from opt_range.cc, and table.cc.
|
|
||||||
This should be factored out, e.g. as a method of Field.
|
|
||||||
In addition it is not clear if any of the Field::*_length
|
|
||||||
methods is supposed to compute the same length. If so, it
|
|
||||||
might be reused.
|
|
||||||
*/
|
|
||||||
key_part_info->store_length= key_part_info->length;
|
|
||||||
|
|
||||||
if ((*reg_field)->real_maybe_null())
|
|
||||||
{
|
|
||||||
key_part_info->store_length+= HA_KEY_NULL_LENGTH;
|
|
||||||
keyinfo->key_length+= HA_KEY_NULL_LENGTH;
|
|
||||||
if (unique)
|
|
||||||
keyinfo->flags|= HA_NULL_ARE_EQUAL; // def. that NULL == NULL
|
|
||||||
}
|
|
||||||
if ((*reg_field)->type() == MYSQL_TYPE_BLOB ||
|
|
||||||
(*reg_field)->real_type() == MYSQL_TYPE_VARCHAR)
|
|
||||||
{
|
|
||||||
key_part_info->store_length+= HA_KEY_BLOB_LENGTH;
|
|
||||||
keyinfo->key_length+= HA_KEY_BLOB_LENGTH; // ???
|
|
||||||
}
|
|
||||||
|
|
||||||
key_part_info->type= (uint8) (*reg_field)->key_type();
|
|
||||||
key_part_info->key_type =
|
|
||||||
((ha_base_keytype) key_part_info->type == HA_KEYTYPE_TEXT ||
|
|
||||||
(ha_base_keytype) key_part_info->type == HA_KEYTYPE_VARTEXT1 ||
|
|
||||||
(ha_base_keytype) key_part_info->type == HA_KEYTYPE_VARTEXT2) ?
|
|
||||||
0 : FIELDFLAG_BINARY;
|
|
||||||
key_part_info++;
|
key_part_info++;
|
||||||
}
|
}
|
||||||
|
|
||||||
set_if_bigger(s->max_key_length, keyinfo->key_length);
|
set_if_bigger(s->max_key_length, keyinfo->key_length);
|
||||||
s->keys++;
|
s->keys++;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -725,6 +725,7 @@ struct st_table {
|
|||||||
uchar *null_flags;
|
uchar *null_flags;
|
||||||
my_bitmap_map *bitmap_init_value;
|
my_bitmap_map *bitmap_init_value;
|
||||||
MY_BITMAP def_read_set, def_write_set, def_vcol_set, tmp_set;
|
MY_BITMAP def_read_set, def_write_set, def_vcol_set, tmp_set;
|
||||||
|
MY_BITMAP eq_join_set; /* used to mark equi-joined fields */
|
||||||
MY_BITMAP *read_set, *write_set, *vcol_set; /* Active column sets */
|
MY_BITMAP *read_set, *write_set, *vcol_set; /* Active column sets */
|
||||||
/*
|
/*
|
||||||
The ID of the query that opened and is using this table. Has different
|
The ID of the query that opened and is using this table. Has different
|
||||||
@ -955,6 +956,8 @@ struct st_table {
|
|||||||
bool add_tmp_key(uint key, uint key_parts,
|
bool add_tmp_key(uint key, uint key_parts,
|
||||||
uint (*next_field_no) (uchar *), uchar *arg,
|
uint (*next_field_no) (uchar *), uchar *arg,
|
||||||
bool unique);
|
bool unique);
|
||||||
|
void create_key_part_by_field(KEY *keyinfo, KEY_PART_INFO *key_part_info,
|
||||||
|
Field *field);
|
||||||
bool is_children_attached(void);
|
bool is_children_attached(void);
|
||||||
inline void enable_keyread()
|
inline void enable_keyread()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user