summaryrefslogtreecommitdiff
path: root/mysql-test/main/opt_trace.result
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/main/opt_trace.result')
-rw-r--r--mysql-test/main/opt_trace.result3524
1 files changed, 2112 insertions, 1412 deletions
diff --git a/mysql-test/main/opt_trace.result b/mysql-test/main/opt_trace.result
index a32e392f8f7..837662adab6 100644
--- a/mysql-test/main/opt_trace.result
+++ b/mysql-test/main/opt_trace.result
@@ -118,8 +118,8 @@ select * from v1 {
"table": "t1",
"table_scan": {
"rows": 2,
- "read_cost": 1.002197266,
- "read_and_compare_cost": 1.502197266
+ "read_cost": 0.01024881,
+ "read_and_compare_cost": 0.01031281
}
}
]
@@ -137,30 +137,30 @@ select * from v1 {
{
"access_type": "scan",
"rows": 2,
- "rows_after_scan": 1,
"rows_after_filter": 1,
- "cost": 1.502197266,
+ "rows_out": 1,
+ "cost": 0.01031281,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 1,
- "records_out": 1,
- "cost": 1.502197266,
+ "rows_read": 1,
+ "rows_out": 1,
+ "cost": 0.01031281,
"uses_join_buffering": false
}
},
"rows_for_plan": 1,
- "cost_for_plan": 1.502197266
+ "cost_for_plan": 0.01031281
}
]
},
{
"best_join_order": ["t1"],
"rows": 1,
- "cost": 1.502197266
+ "cost": 0.01031281
},
{
"substitute_best_equal": {
@@ -278,8 +278,8 @@ select * from (select * from t1 where t1.a=1)q {
"table": "t1",
"table_scan": {
"rows": 2,
- "read_cost": 1.002197266,
- "read_and_compare_cost": 1.502197266
+ "read_cost": 0.01024881,
+ "read_and_compare_cost": 0.01031281
}
}
]
@@ -297,30 +297,30 @@ select * from (select * from t1 where t1.a=1)q {
{
"access_type": "scan",
"rows": 2,
- "rows_after_scan": 1,
"rows_after_filter": 1,
- "cost": 1.502197266,
+ "rows_out": 1,
+ "cost": 0.01031281,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 1,
- "records_out": 1,
- "cost": 1.502197266,
+ "rows_read": 1,
+ "rows_out": 1,
+ "cost": 0.01031281,
"uses_join_buffering": false
}
},
"rows_for_plan": 1,
- "cost_for_plan": 1.502197266
+ "cost_for_plan": 0.01031281
}
]
},
{
"best_join_order": ["t1"],
"rows": 1,
- "cost": 1.502197266
+ "cost": 0.01031281
},
{
"substitute_best_equal": {
@@ -443,8 +443,8 @@ select * from v2 {
"table": "t1",
"table_scan": {
"rows": 2,
- "read_cost": 1.002197266,
- "read_and_compare_cost": 1.502197266
+ "read_cost": 0.01024881,
+ "read_and_compare_cost": 0.01031281
}
}
]
@@ -462,9 +462,9 @@ select * from v2 {
{
"access_type": "scan",
"rows": 2,
- "rows_after_scan": 1,
"rows_after_filter": 1,
- "cost": 1.502197266,
+ "rows_out": 1,
+ "cost": 0.01031281,
"index_only": false,
"chosen": true,
"use_tmp_table": true
@@ -472,22 +472,22 @@ select * from v2 {
],
"chosen_access_method": {
"type": "scan",
- "records_read": 1,
- "records_out": 1,
- "cost": 1.502197266,
+ "rows_read": 1,
+ "rows_out": 1,
+ "cost": 0.01031281,
"uses_join_buffering": false
}
},
"rows_for_plan": 1,
- "cost_for_plan": 1.502197266,
- "cost_for_sorting": 1
+ "cost_for_plan": 0.01031281,
+ "cost_for_sorting": 6.301866e-4
}
]
},
{
"best_join_order": ["t1"],
"rows": 1,
- "cost": 2.502197266
+ "cost": 0.010942997
},
{
"substitute_best_equal": {
@@ -525,8 +525,8 @@ select * from v2 {
"table": "<derived2>",
"table_scan": {
"rows": 2,
- "read_cost": 2,
- "read_and_compare_cost": 2.5
+ "read_cost": 0.012350033,
+ "read_and_compare_cost": 0.012418701
}
}
]
@@ -544,30 +544,30 @@ select * from v2 {
{
"access_type": "scan",
"rows": 2,
- "rows_after_scan": 2,
"rows_after_filter": 2,
- "cost": 2.5,
+ "rows_out": 2,
+ "cost": 0.012418701,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 2,
- "records_out": 2,
- "cost": 2.5,
+ "rows_read": 2,
+ "rows_out": 2,
+ "cost": 0.012418701,
"uses_join_buffering": false
}
},
"rows_for_plan": 2,
- "cost_for_plan": 2.5
+ "cost_for_plan": 0.012418701
}
]
},
{
"best_join_order": ["<derived2>"],
"rows": 2,
- "cost": 2.5
+ "cost": 0.012418701
},
{
"attaching_conditions_to_tables": {
@@ -671,8 +671,8 @@ explain select * from v2 {
"table": "t2",
"table_scan": {
"rows": 10,
- "read_cost": 1.010986328,
- "read_and_compare_cost": 3.510986328
+ "read_cost": 0.01124405,
+ "read_and_compare_cost": 0.01156405
}
}
]
@@ -690,30 +690,30 @@ explain select * from v2 {
{
"access_type": "scan",
"rows": 10,
- "rows_after_scan": 10,
"rows_after_filter": 10,
- "cost": 3.510986328,
+ "rows_out": 10,
+ "cost": 0.01156405,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 10,
- "records_out": 10,
- "cost": 3.510986328,
+ "rows_read": 10,
+ "rows_out": 10,
+ "cost": 0.01156405,
"uses_join_buffering": false
}
},
"rows_for_plan": 10,
- "cost_for_plan": 3.510986328
+ "cost_for_plan": 0.01156405
}
]
},
{
"best_join_order": ["t2"],
"rows": 10,
- "cost": 3.510986328
+ "cost": 0.01156405
},
{
"attaching_conditions_to_tables": {
@@ -796,8 +796,8 @@ explain select * from v1 {
"table": "t1",
"table_scan": {
"rows": 10,
- "read_cost": 1.010986328,
- "read_and_compare_cost": 3.510986328
+ "read_cost": 0.01124405,
+ "read_and_compare_cost": 0.01156405
}
}
]
@@ -815,9 +815,9 @@ explain select * from v1 {
{
"access_type": "scan",
"rows": 10,
- "rows_after_scan": 10,
"rows_after_filter": 10,
- "cost": 3.510986328,
+ "rows_out": 10,
+ "cost": 0.01156405,
"index_only": false,
"chosen": true,
"use_tmp_table": true
@@ -825,22 +825,22 @@ explain select * from v1 {
],
"chosen_access_method": {
"type": "scan",
- "records_read": 10,
- "records_out": 10,
- "cost": 3.510986328,
+ "rows_read": 10,
+ "rows_out": 10,
+ "cost": 0.01156405,
"uses_join_buffering": false
}
},
"rows_for_plan": 10,
- "cost_for_plan": 3.510986328,
- "cost_for_sorting": 10
+ "cost_for_plan": 0.01156405,
+ "cost_for_sorting": 0.006368384
}
]
},
{
"best_join_order": ["t1"],
"rows": 10,
- "cost": 13.51098633
+ "cost": 0.017932434
},
{
"attaching_conditions_to_tables": {
@@ -872,8 +872,8 @@ explain select * from v1 {
"table": "<derived2>",
"table_scan": {
"rows": 10,
- "read_cost": 10,
- "read_and_compare_cost": 12.5
+ "read_cost": 0.012414166,
+ "read_and_compare_cost": 0.012757506
}
}
]
@@ -891,30 +891,30 @@ explain select * from v1 {
{
"access_type": "scan",
"rows": 10,
- "rows_after_scan": 10,
"rows_after_filter": 10,
- "cost": 12.5,
+ "rows_out": 10,
+ "cost": 0.012757506,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 10,
- "records_out": 10,
- "cost": 12.5,
+ "rows_read": 10,
+ "rows_out": 10,
+ "cost": 0.012757506,
"uses_join_buffering": false
}
},
"rows_for_plan": 10,
- "cost_for_plan": 12.5
+ "cost_for_plan": 0.012757506
}
]
},
{
"best_join_order": ["<derived2>"],
"rows": 10,
- "cost": 12.5
+ "cost": 0.012757506
},
{
"attaching_conditions_to_tables": {
@@ -1044,16 +1044,16 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
"table": "t1",
"table_scan": {
"rows": 100,
- "read_cost": 1.158691406,
- "read_and_compare_cost": 26.15869141
+ "read_cost": 0.0224405,
+ "read_and_compare_cost": 0.0256405
}
},
{
"table": "t2",
"table_scan": {
"rows": 100,
- "read_cost": 1.158691406,
- "read_and_compare_cost": 26.15869141
+ "read_cost": 0.0224405,
+ "read_and_compare_cost": 0.0256405
}
}
]
@@ -1071,23 +1071,23 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
{
"access_type": "scan",
"rows": 100,
- "rows_after_scan": 100,
"rows_after_filter": 100,
- "cost": 26.15869141,
+ "rows_out": 100,
+ "cost": 0.0256405,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 100,
- "records_out": 100,
- "cost": 26.15869141,
+ "rows_read": 100,
+ "rows_out": 100,
+ "cost": 0.0256405,
"uses_join_buffering": false
}
},
"rows_for_plan": 100,
- "cost_for_plan": 26.15869141,
+ "cost_for_plan": 0.0256405,
"rest_of_plan": [
{
"plan_prefix": ["t1"],
@@ -1103,30 +1103,29 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
"used_range_estimates": false,
"cause": "not available",
"rows": 1,
- "cost": 125.0585794,
+ "cost": 0.1731074,
"chosen": true
},
{
"access_type": "scan_with_join_cache",
"rows": 100,
- "rows_after_scan": 75,
- "rows_after_filter": 75,
- "cost": 1807.408691,
+ "rows_after_filter": 100,
+ "rows_out": 1,
+ "cost": 0.9603871,
"index_only": false,
"chosen": false
}
],
"chosen_access_method": {
"type": "ref",
- "records_read": 1,
- "records_out": 1,
- "cost": 125.0585794,
+ "rows_read": 1,
+ "rows_out": 1,
+ "cost": 0.1731074,
"uses_join_buffering": false
}
},
"rows_for_plan": 100,
- "cost_for_plan": 151.2172709,
- "pruned_by_hanging_leaf": true
+ "cost_for_plan": 0.1987479
}
]
},
@@ -1141,23 +1140,23 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
{
"access_type": "scan",
"rows": 100,
- "rows_after_scan": 100,
"rows_after_filter": 100,
- "cost": 26.15869141,
+ "rows_out": 100,
+ "cost": 0.0256405,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 100,
- "records_out": 100,
- "cost": 26.15869141,
+ "rows_read": 100,
+ "rows_out": 100,
+ "cost": 0.0256405,
"uses_join_buffering": false
}
},
"rows_for_plan": 100,
- "cost_for_plan": 26.15869141,
+ "cost_for_plan": 0.0256405,
"rest_of_plan": [
{
"plan_prefix": ["t2"],
@@ -1173,29 +1172,29 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
"used_range_estimates": false,
"cause": "not available",
"rows": 1,
- "cost": 125.0585794,
+ "cost": 0.1731074,
"chosen": true
},
{
"access_type": "scan_with_join_cache",
"rows": 100,
- "rows_after_scan": 75,
- "rows_after_filter": 75,
- "cost": 1807.408691,
+ "rows_after_filter": 100,
+ "rows_out": 1,
+ "cost": 0.9603871,
"index_only": false,
"chosen": false
}
],
"chosen_access_method": {
"type": "ref",
- "records_read": 1,
- "records_out": 1,
- "cost": 125.0585794,
+ "rows_read": 1,
+ "rows_out": 1,
+ "cost": 0.1731074,
"uses_join_buffering": false
}
},
"rows_for_plan": 100,
- "cost_for_plan": 151.2172709,
+ "cost_for_plan": 0.1987479,
"pruned_by_cost": true
}
]
@@ -1205,7 +1204,7 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
{
"best_join_order": ["t1", "t2"],
"rows": 100,
- "cost": 151.2172709
+ "cost": 0.1987479
},
{
"substitute_best_equal": {
@@ -1244,10 +1243,11 @@ drop table t1,t2,t0;
# group_by min max optimization
#
CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, a INT NOT NULL, KEY(a));
+insert into t1 select seq, mod(seq,4)+1 from seq_1_to_65536;
analyze table t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
-test.t1 analyze status OK
+test.t1 analyze status Table is already up to date
EXPLAIN SELECT DISTINCT a FROM t1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range NULL a 4 NULL 5 Using index for group-by
@@ -1286,7 +1286,7 @@ EXPLAIN SELECT DISTINCT a FROM t1 {
"range_analysis": {
"table_scan": {
"rows": 65536,
- "cost": 16457
+ "cost": 10.29477568
},
"potential_range_indexes": [
{
@@ -1302,7 +1302,7 @@ EXPLAIN SELECT DISTINCT a FROM t1 {
],
"best_covering_index_scan": {
"index": "a",
- "cost": 14898.29141,
+ "cost": 9.123706862,
"chosen": true
},
"group_index_range": {
@@ -1312,7 +1312,7 @@ EXPLAIN SELECT DISTINCT a FROM t1 {
"index": "a",
"covering": true,
"rows": 5,
- "cost": 6.5
+ "cost": 0.004191135
}
]
},
@@ -1324,7 +1324,7 @@ EXPLAIN SELECT DISTINCT a FROM t1 {
"max_aggregate": false,
"distinct_aggregate": false,
"rows": 5,
- "cost": 6.5,
+ "cost": 0.004191135,
"key_parts_used_for_access": ["a"],
"ranges": [],
"chosen": true
@@ -1338,12 +1338,12 @@ EXPLAIN SELECT DISTINCT a FROM t1 {
"max_aggregate": false,
"distinct_aggregate": false,
"rows": 5,
- "cost": 6.5,
+ "cost": 0.004191135,
"key_parts_used_for_access": ["a"],
"ranges": []
},
"rows_for_plan": 5,
- "cost_for_plan": 6.5,
+ "cost_for_plan": 0.004191135,
"chosen": true
}
}
@@ -1363,29 +1363,29 @@ EXPLAIN SELECT DISTINCT a FROM t1 {
{
"access_type": "index_merge",
"rows": 5,
- "rows_after_scan": 5,
"rows_after_filter": 5,
- "cost": 6.5,
+ "rows_out": 5,
+ "cost": 0.004191135,
"chosen": true
}
],
"chosen_access_method": {
"type": "index_merge",
- "records_read": 5,
- "records_out": 5,
- "cost": 6.5,
+ "rows_read": 5,
+ "rows_out": 5,
+ "cost": 0.004191135,
"uses_join_buffering": false
}
},
"rows_for_plan": 5,
- "cost_for_plan": 6.5
+ "cost_for_plan": 0.004191135
}
]
},
{
"best_join_order": ["t1"],
"rows": 5,
- "cost": 6.5
+ "cost": 0.004191135
},
{
"attaching_conditions_to_tables": {
@@ -1421,10 +1421,13 @@ test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a;
id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range NULL a 20 NULL 7 Using where; Using index for group-by
+set statement optimizer_scan_setup_cost=0 for EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a;
+id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index NULL a 20 NULL 7 Using where; Using index
select * from information_schema.OPTIMIZER_TRACE;
QUERY TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE INSUFFICIENT_PRIVILEGES
-EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
+set statement optimizer_scan_setup_cost=0 for EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
"steps": [
{
"join_preparation": {
@@ -1480,7 +1483,7 @@ EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
"range_analysis": {
"table_scan": {
"rows": 7,
- "cost": 2.764526367
+ "cost": 0.001094835
},
"potential_range_indexes": [
{
@@ -1491,8 +1494,9 @@ EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
],
"best_covering_index_scan": {
"index": "a",
- "cost": 2.084226263,
- "chosen": true
+ "cost": 0.001758432,
+ "chosen": false,
+ "cause": "cost"
},
"setup_range_conditions": [],
"analyzing_range_alternatives": {
@@ -1509,7 +1513,7 @@ EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
"covering": true,
"ranges": ["(2,3) <= (b,c) <= (2,3)"],
"rows": 7,
- "cost": 2.75
+ "cost": 0.004425189
}
]
},
@@ -1521,7 +1525,7 @@ EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
"max_aggregate": false,
"distinct_aggregate": false,
"rows": 7,
- "cost": 2.75,
+ "cost": 0.004425189,
"key_parts_used_for_access": ["a", "b", "c"],
"ranges": ["(2,3) <= (b,c) <= (2,3)"],
"chosen": false,
@@ -1560,9 +1564,9 @@ EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
{
"access_type": "scan",
"rows": 7,
- "rows_after_scan": 1,
"rows_after_filter": 1,
- "cost": 2.084226263,
+ "rows_out": 0.584899902,
+ "cost": 0.001758432,
"index_only": true,
"chosen": true,
"use_tmp_table": true
@@ -1570,22 +1574,22 @@ EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
],
"chosen_access_method": {
"type": "scan",
- "records_read": 1,
- "records_out": 0.584899902,
- "cost": 2.084226263,
+ "rows_read": 1,
+ "rows_out": 0.584899902,
+ "cost": 0.001758432,
"uses_join_buffering": false
}
},
- "rows_for_plan": 1,
- "cost_for_plan": 2.084226263,
- "cost_for_sorting": 1
+ "rows_for_plan": 0.584899902,
+ "cost_for_plan": 0.001758432,
+ "cost_for_sorting": 3.670142e-4
}
]
},
{
"best_join_order": ["t1"],
- "rows": 1,
- "cost": 3.084226263
+ "rows": 0.584899902,
+ "cost": 0.002125446
},
{
"substitute_best_equal": {
@@ -1609,8 +1613,8 @@ EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
"clause": "GROUP BY",
"table": "t1",
"rows_estimation": 1,
- "read_cost": 2.147624763,
- "filesort_cost": 0.0633985,
+ "read_cost": 0.001804223,
+ "filesort_cost": 4.579083e-5,
"filesort_type": "priority_queue with addon fields",
"fanout": 1,
"possible_keys": [
@@ -1619,7 +1623,7 @@ EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
"can_resolve_order": true,
"rows_to_examine": 7,
"range_scan": false,
- "scan_cost": 2.084226263,
+ "scan_cost": 0.001667847,
"chosen": true
}
]
@@ -1708,7 +1712,7 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
"range_analysis": {
"table_scan": {
"rows": 16,
- "cost": 5.015625
+ "cost": 0.01250248
},
"potential_range_indexes": [
{
@@ -1719,7 +1723,7 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
],
"best_covering_index_scan": {
"index": "id",
- "cost": 4.11171589,
+ "cost": 0.008002862,
"chosen": true
},
"setup_range_conditions": [],
@@ -1737,7 +1741,7 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
"covering": true,
"ranges": ["(2001-01-04) <= (a)"],
"rows": 9,
- "cost": 3.25
+ "cost": 0.005620843
}
]
},
@@ -1749,7 +1753,7 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
"max_aggregate": true,
"distinct_aggregate": false,
"rows": 9,
- "cost": 3.25,
+ "cost": 0.005620843,
"key_parts_used_for_access": ["id"],
"ranges": ["(2001-01-04) <= (a)"],
"chosen": true
@@ -1763,12 +1767,12 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
"max_aggregate": true,
"distinct_aggregate": false,
"rows": 9,
- "cost": 3.25,
+ "cost": 0.005620843,
"key_parts_used_for_access": ["id"],
"ranges": ["(2001-01-04) <= (a)"]
},
"rows_for_plan": 9,
- "cost_for_plan": 3.25,
+ "cost_for_plan": 0.005620843,
"chosen": true
}
}
@@ -1788,31 +1792,31 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
{
"access_type": "index_merge",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 3.25,
+ "rows_out": 9,
+ "cost": 0.005620843,
"chosen": true,
"use_tmp_table": true
}
],
"chosen_access_method": {
"type": "index_merge",
- "records_read": 9,
- "records_out": 9,
- "cost": 3.25,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.005620843,
"uses_join_buffering": false
}
},
"rows_for_plan": 9,
- "cost_for_plan": 3.25,
- "cost_for_sorting": 9
+ "cost_for_plan": 0.005620843,
+ "cost_for_sorting": 0.005728198
}
]
},
{
"best_join_order": ["t1"],
"rows": 9,
- "cost": 12.25
+ "cost": 0.011349041
},
{
"substitute_best_equal": {
@@ -1903,7 +1907,7 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id {
"range_analysis": {
"table_scan": {
"rows": 16,
- "cost": 5.015625
+ "cost": 0.01250248
},
"potential_range_indexes": [
{
@@ -1914,7 +1918,7 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id {
],
"best_covering_index_scan": {
"index": "id",
- "cost": 4.11171589,
+ "cost": 0.008002862,
"chosen": true
},
"setup_range_conditions": [],
@@ -1932,7 +1936,7 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id {
"covering": true,
"ranges": ["(2001-01-04) <= (a) <= (2001-01-04)"],
"rows": 9,
- "cost": 3.25
+ "cost": 0.005620843
}
]
},
@@ -1944,7 +1948,7 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id {
"max_aggregate": false,
"distinct_aggregate": false,
"rows": 9,
- "cost": 3.25,
+ "cost": 0.005620843,
"key_parts_used_for_access": ["id", "a"],
"ranges": ["(2001-01-04) <= (a) <= (2001-01-04)"],
"chosen": true
@@ -1958,12 +1962,12 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id {
"max_aggregate": false,
"distinct_aggregate": false,
"rows": 9,
- "cost": 3.25,
+ "cost": 0.005620843,
"key_parts_used_for_access": ["id", "a"],
"ranges": ["(2001-01-04) <= (a) <= (2001-01-04)"]
},
"rows_for_plan": 9,
- "cost_for_plan": 3.25,
+ "cost_for_plan": 0.005620843,
"chosen": true
}
}
@@ -1983,31 +1987,31 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id {
{
"access_type": "index_merge",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 3.25,
+ "rows_out": 9,
+ "cost": 0.005620843,
"chosen": true,
"use_tmp_table": true
}
],
"chosen_access_method": {
"type": "index_merge",
- "records_read": 9,
- "records_out": 9,
- "cost": 3.25,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.005620843,
"uses_join_buffering": false
}
},
"rows_for_plan": 9,
- "cost_for_plan": 3.25,
- "cost_for_sorting": 9
+ "cost_for_plan": 0.005620843,
+ "cost_for_sorting": 0.005728198
}
]
},
{
"best_join_order": ["t1"],
"rows": 9,
- "cost": 12.25
+ "cost": 0.011349041
},
{
"substitute_best_equal": {
@@ -2041,10 +2045,6 @@ drop table t1;
#
# Late ORDER BY optimization
#
-create table ten(a int);
-insert into ten values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
-create table one_k(a int primary key);
-insert into one_k select A.a + B.a* 10 + C.a * 100 from ten A, ten B, ten C;
create table t1 (
pk int not null,
a int,
@@ -2055,19 +2055,18 @@ KEY c(c),
KEY a_c(a,c),
KEY a_b(a,b)
);
-insert into t1
-select a, a,a,a, 'filler-dataaa' from test.one_k;
+insert into t1 select seq, seq,seq,seq, 'filler-dataaa' from seq_0_to_999;
update t1 set a=1 where pk between 0 and 180;
update t1 set b=2 where pk between 0 and 20;
analyze table t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
-set optimizer_trace='enabled=on';
explain select * from t1 where a=1 and b=2 order by c limit 1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref a_c,a_b a_b 10 const,const 21 Using where; Using filesort
update t1 set b=2 where pk between 20 and 40;
+set optimizer_trace='enabled=on';
explain select * from t1 where a=1 and b=2 order by c limit 1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range a_c,a_b a_c 5 NULL 180 Using where
@@ -2148,7 +2147,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
"range_analysis": {
"table_scan": {
"rows": 1000,
- "cost": 265.2822266
+ "cost": 0.1731362
},
"potential_range_indexes": [
{
@@ -2177,8 +2176,9 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
"using_mrr": false,
"index_only": false,
"rows": 180,
- "cost": 135.6693776,
- "chosen": true
+ "cost": 0.223346519,
+ "chosen": false,
+ "cause": "cost"
},
{
"index": "a_b",
@@ -2187,7 +2187,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
"using_mrr": false,
"index_only": false,
"rows": 41,
- "cost": 31.3040249,
+ "cost": 0.051838728,
"chosen": true
}
],
@@ -2208,7 +2208,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
"ranges": ["(1,2) <= (a,b) <= (1,2)"]
},
"rows_for_plan": 41,
- "cost_for_plan": 31.3040249,
+ "cost_for_plan": 0.051838728,
"chosen": true
}
}
@@ -2218,12 +2218,12 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
"rowid_filters": [
{
"key": "a_b",
- "build_cost": 1.752281351,
+ "build_cost": 0.006243462,
"rows": 41
},
{
"key": "a_c",
- "build_cost": 6.264109827,
+ "build_cost": 0.026549953,
"rows": 180
}
]
@@ -2266,7 +2266,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
"index": "a_c",
"used_range_estimates": true,
"rows": 180,
- "cost": 135.6493776,
+ "cost": 0.222796377,
"chosen": true
},
{
@@ -2274,7 +2274,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
"index": "a_b",
"used_range_estimates": true,
"rows": 41,
- "cost": 31.2840249,
+ "cost": 0.051288586,
"chosen": true
},
{
@@ -2285,21 +2285,21 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
],
"chosen_access_method": {
"type": "ref",
- "records_read": 41,
- "records_out": 41,
- "cost": 31.2840249,
+ "rows_read": 41,
+ "rows_out": 41,
+ "cost": 0.051288586,
"uses_join_buffering": false
}
},
"rows_for_plan": 41,
- "cost_for_plan": 31.2840249
+ "cost_for_plan": 0.051288586
}
]
},
{
"best_join_order": ["t1"],
"rows": 41,
- "cost": 31.2840249
+ "cost": 0.051288586
},
{
"substitute_best_equal": {
@@ -2323,8 +2323,8 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
"clause": "ORDER BY",
"table": "t1",
"rows_estimation": 41,
- "read_cost": 32.58369415,
- "filesort_cost": 1.299669251,
+ "read_cost": 0.052227298,
+ "filesort_cost": 9.387121e-4,
"filesort_type": "priority_queue with addon fields",
"fanout": 1,
"possible_keys": [
@@ -2333,7 +2333,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
"can_resolve_order": true,
"rows_to_examine": 24,
"range_scan": false,
- "scan_cost": 18.51405907,
+ "scan_cost": 0.030312813,
"chosen": true
},
{
@@ -2341,7 +2341,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
"can_resolve_order": true,
"rows_to_examine": 4,
"range_scan": true,
- "scan_cost": 10.5218905,
+ "scan_cost": 0.021302281,
"chosen": true
},
{
@@ -2355,10 +2355,6 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
{
"table": "t1",
"range_analysis": {
- "table_scan": {
- "rows": 1000,
- "cost": 1.79769e308
- },
"potential_range_indexes": [
{
"index": "c",
@@ -2386,7 +2382,8 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
"using_mrr": false,
"index_only": false,
"rows": 180,
- "cost": 135.6693776,
+ "cost": 0.223346519,
+ "cost_with_limit": 0.002483968,
"chosen": true
}
],
@@ -2407,7 +2404,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
"ranges": ["(1) <= (a) <= (1)"]
},
"rows_for_plan": 180,
- "cost_for_plan": 135.6693776,
+ "cost_for_plan": 0.223346519,
"chosen": true
}
}
@@ -2423,7 +2420,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
}
]
} 0 0
-drop table t1,ten,one_k;
+drop table t1;
#
# TABLE ELIMINATION
#
@@ -2513,8 +2510,8 @@ select t1.a from t1 left join t2 on t1.a=t2.a {
"table": "t1",
"table_scan": {
"rows": 4,
- "read_cost": 1.003417969,
- "read_and_compare_cost": 2.003417969
+ "read_cost": 0.01049762,
+ "read_and_compare_cost": 0.01062562
}
},
{
@@ -2538,30 +2535,30 @@ select t1.a from t1 left join t2 on t1.a=t2.a {
{
"access_type": "scan",
"rows": 4,
- "rows_after_scan": 4,
"rows_after_filter": 4,
- "cost": 2.003417969,
+ "rows_out": 4,
+ "cost": 0.01062562,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 4,
- "records_out": 4,
- "cost": 2.003417969,
+ "rows_read": 4,
+ "rows_out": 4,
+ "cost": 0.01062562,
"uses_join_buffering": false
}
},
"rows_for_plan": 4,
- "cost_for_plan": 2.003417969
+ "cost_for_plan": 0.01062562
}
]
},
{
"best_join_order": ["t2", "t1"],
"rows": 4,
- "cost": 2.003417969
+ "cost": 0.01062562
},
{
"substitute_best_equal": {
@@ -2660,16 +2657,16 @@ explain select * from t1 left join t2 on t2.a=t1.a {
"table": "t1",
"table_scan": {
"rows": 4,
- "read_cost": 1.003417969,
- "read_and_compare_cost": 2.003417969
+ "read_cost": 0.01049762,
+ "read_and_compare_cost": 0.01062562
}
},
{
"table": "t2",
"table_scan": {
"rows": 2,
- "read_cost": 1.002197266,
- "read_and_compare_cost": 1.502197266
+ "read_cost": 0.01024881,
+ "read_and_compare_cost": 0.01031281
}
}
]
@@ -2687,23 +2684,23 @@ explain select * from t1 left join t2 on t2.a=t1.a {
{
"access_type": "scan",
"rows": 4,
- "rows_after_scan": 4,
"rows_after_filter": 4,
- "cost": 2.003417969,
+ "rows_out": 4,
+ "cost": 0.01062562,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 4,
- "records_out": 4,
- "cost": 2.003417969,
+ "rows_read": 4,
+ "rows_out": 4,
+ "cost": 0.01062562,
"uses_join_buffering": false
}
},
"rows_for_plan": 4,
- "cost_for_plan": 2.003417969,
+ "cost_for_plan": 0.01062562,
"rest_of_plan": [
{
"plan_prefix": ["t1"],
@@ -2717,30 +2714,25 @@ explain select * from t1 left join t2 on t2.a=t1.a {
"access_type": "eq_ref",
"index": "PRIMARY",
"rows": 1,
- "cost": 5.002147913,
+ "cost": 0.007120904,
"chosen": true
},
{
- "access_type": "scan",
- "rows": 2,
- "rows_after_scan": 1.5,
- "rows_after_filter": 1.5,
- "cost": 6.008789062,
- "index_only": false,
- "chosen": false
+ "type": "scan",
+ "chosen": false,
+ "cause": "cost"
}
],
"chosen_access_method": {
"type": "eq_ref",
- "records_read": 1,
- "records_out": 1,
- "cost": 5.002147913,
+ "rows_read": 1,
+ "rows_out": 1,
+ "cost": 0.007120904,
"uses_join_buffering": false
}
},
"rows_for_plan": 4,
- "cost_for_plan": 7.005565882,
- "pruned_by_hanging_leaf": true
+ "cost_for_plan": 0.017746524
}
]
}
@@ -2749,7 +2741,7 @@ explain select * from t1 left join t2 on t2.a=t1.a {
{
"best_join_order": ["t1", "t2"],
"rows": 4,
- "cost": 7.005565882
+ "cost": 0.017746524
},
{
"substitute_best_equal": {
@@ -2882,8 +2874,8 @@ explain select t1.a from t1 left join (t2 join t3 on t2.b=t3.b) on t2.a=t1.a and
"table": "t1",
"table_scan": {
"rows": 4,
- "read_cost": 1.003417969,
- "read_and_compare_cost": 2.003417969
+ "read_cost": 0.01049762,
+ "read_and_compare_cost": 0.01062562
}
},
{
@@ -2913,30 +2905,30 @@ explain select t1.a from t1 left join (t2 join t3 on t2.b=t3.b) on t2.a=t1.a and
{
"access_type": "scan",
"rows": 4,
- "rows_after_scan": 4,
"rows_after_filter": 4,
- "cost": 2.003417969,
+ "rows_out": 4,
+ "cost": 0.01062562,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 4,
- "records_out": 4,
- "cost": 2.003417969,
+ "rows_read": 4,
+ "rows_out": 4,
+ "cost": 0.01062562,
"uses_join_buffering": false
}
},
"rows_for_plan": 4,
- "cost_for_plan": 2.003417969
+ "cost_for_plan": 0.01062562
}
]
},
{
"best_join_order": ["t3", "t2", "t1"],
"rows": 4,
- "cost": 2.003417969
+ "cost": 0.01062562
},
{
"substitute_best_equal": {
@@ -2974,33 +2966,27 @@ drop table t0, t1, t2, t3;
#
# IN subquery to sem-join is traced
#
-create table t0 (a int);
-insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1(a int, b int);
-insert into t1 values (0,0),(1,1),(2,2);
-create table t2 as select * from t1;
-create table t11(a int, b int);
-create table t10 (pk int, a int);
-insert into t10 select a,a from t0;
-create table t12 like t10;
-insert into t12 select * from t10;
-analyze table t1,t10;
-Table Op Msg_type Msg_text
-test.t1 analyze status Engine-independent statistics collected
-test.t1 analyze status OK
-test.t10 analyze status Engine-independent statistics collected
-test.t10 analyze status OK
+insert into t1 select seq,seq from seq_0_to_3;
+create table t2 (p int, a int);
+insert into t2 select seq,seq from seq_1_to_10;
set optimizer_trace='enabled=on';
-explain extended select * from t1 where a in (select pk from t10);
+explain extended select * from t1 where a in (select p from t2);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 4 100.00
+1 PRIMARY t2 ALL NULL NULL NULL NULL 10 100.00 Using where; FirstMatch(t1); Using join buffer (flat, BNL join)
+Warnings:
+Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join (`test`.`t2`) where `test`.`t2`.`p` = `test`.`t1`.`a`
+insert into t2 select seq,seq from seq_10_to_100;
+explain extended select * from t1 where a in (select p from t2);
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
-1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
-2 MATERIALIZED t10 ALL NULL NULL NULL NULL 10 100.00
+1 PRIMARY t1 ALL NULL NULL NULL NULL 4 100.00
+1 PRIMARY t2 ALL NULL NULL NULL NULL 101 100.00 Using where; FirstMatch(t1); Using join buffer (flat, BNL join)
Warnings:
-Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join (`test`.`t10`) where 1
+Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join (`test`.`t2`) where `test`.`t2`.`p` = `test`.`t1`.`a`
select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
QUERY TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE INSUFFICIENT_PRIVILEGES
-explain extended select * from t1 where a in (select pk from t10) {
+explain extended select * from t1 where a in (select p from t2) {
"steps": [
{
"join_preparation": {
@@ -3028,13 +3014,13 @@ explain extended select * from t1 where a in (select pk from t10) {
}
},
{
- "expanded_query": "/* select#2 */ select t10.pk from t10"
+ "expanded_query": "/* select#2 */ select t2.p from t2"
}
]
}
},
{
- "expanded_query": "/* select#1 */ select t1.a AS a,t1.b AS b from t1 where t1.a in (/* select#2 */ select t10.pk from t10)"
+ "expanded_query": "/* select#1 */ select t1.a AS a,t1.b AS b from t1 where t1.a in (/* select#2 */ select t2.p from t2)"
}
]
}
@@ -3054,19 +3040,19 @@ explain extended select * from t1 where a in (select pk from t10) {
{
"condition_processing": {
"condition": "WHERE",
- "original_condition": "1 and t1.a = t10.pk",
+ "original_condition": "1 and t1.a = t2.p",
"steps": [
{
"transformation": "equality_propagation",
- "resulting_condition": "1 and multiple equal(t1.a, t10.pk)"
+ "resulting_condition": "1 and multiple equal(t1.a, t2.p)"
},
{
"transformation": "constant_propagation",
- "resulting_condition": "1 and multiple equal(t1.a, t10.pk)"
+ "resulting_condition": "1 and multiple equal(t1.a, t2.p)"
},
{
"transformation": "trivial_condition_removal",
- "resulting_condition": "multiple equal(t1.a, t10.pk)"
+ "resulting_condition": "multiple equal(t1.a, t2.p)"
}
]
}
@@ -3080,7 +3066,7 @@ explain extended select * from t1 where a in (select pk from t10) {
"depends_on_map_bits": []
},
{
- "table": "t10",
+ "table": "t2",
"row_may_be_null": false,
"map_bit": 1,
"depends_on_map_bits": []
@@ -3095,17 +3081,17 @@ explain extended select * from t1 where a in (select pk from t10) {
{
"table": "t1",
"table_scan": {
- "rows": 3,
- "read_cost": 1.003295898,
- "read_and_compare_cost": 1.753295898
+ "rows": 4,
+ "read_cost": 0.01049762,
+ "read_and_compare_cost": 0.01062562
}
},
{
- "table": "t10",
+ "table": "t2",
"table_scan": {
- "rows": 10,
- "read_cost": 1.010986328,
- "read_and_compare_cost": 3.510986328
+ "rows": 101,
+ "read_cost": 0.022564905,
+ "read_and_compare_cost": 0.025796905
}
}
]
@@ -3122,7 +3108,7 @@ explain extended select * from t1 where a in (select pk from t10) {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t10",
+ "table": "t2",
"best_access_path": {
"plan_details": {
"record_count": 1
@@ -3130,24 +3116,24 @@ explain extended select * from t1 where a in (select pk from t10) {
"considered_access_paths": [
{
"access_type": "scan",
- "rows": 10,
- "rows_after_scan": 10,
- "rows_after_filter": 10,
- "cost": 3.510986328,
+ "rows": 101,
+ "rows_after_filter": 101,
+ "rows_out": 101,
+ "cost": 0.025796905,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 10,
- "records_out": 10,
- "cost": 3.510986328,
+ "rows_read": 101,
+ "rows_out": 101,
+ "cost": 0.025796905,
"uses_join_buffering": false
}
},
- "rows_for_plan": 10,
- "cost_for_plan": 3.510986328
+ "rows_for_plan": 101,
+ "cost_for_plan": 0.025796905
}
]
}
@@ -3166,83 +3152,88 @@ explain extended select * from t1 where a in (select pk from t10) {
"considered_access_paths": [
{
"access_type": "scan",
- "rows": 3,
- "rows_after_scan": 3,
- "rows_after_filter": 3,
- "cost": 1.753295898,
+ "rows": 4,
+ "rows_after_filter": 4,
+ "rows_out": 4,
+ "cost": 0.01062562,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.753295898,
+ "rows_read": 4,
+ "rows_out": 4,
+ "cost": 0.01062562,
"uses_join_buffering": false
}
},
- "rows_for_plan": 3,
- "cost_for_plan": 1.753295898,
+ "rows_for_plan": 4,
+ "cost_for_plan": 0.01062562,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
"plan_prefix": ["t1"],
- "table": "t10",
+ "table": "t2",
"best_access_path": {
"plan_details": {
- "record_count": 3
+ "record_count": 4
},
"considered_access_paths": [
{
"access_type": "scan_with_join_cache",
- "rows": 10,
- "rows_after_scan": 10,
- "rows_after_filter": 10,
- "cost": 10.63598633,
+ "rows": 101,
+ "rows_after_filter": 101,
+ "rows_out": 101,
+ "cost": 0.063558233,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 10,
- "records_out": 10,
- "cost": 10.63598633,
+ "rows_read": 101,
+ "rows_out": 101,
+ "cost": 0.063558233,
"uses_join_buffering": true
}
},
- "rows_for_plan": 30,
- "cost_for_plan": 12.38928223,
+ "rows_for_plan": 404,
+ "cost_for_plan": 0.074183853,
"semijoin_strategy_choice": [
{
"strategy": "FirstMatch",
- "records": 3,
- "cost": 12.38928223
+ "rows": 4,
+ "cost": 0.074183853
},
{
"strategy": "SJ-Materialization",
- "records": 3,
- "cost": 8.664282227
+ "rows": 4,
+ "cost": 0.078697445
},
{
"strategy": "DuplicateWeedout",
- "records": 3,
- "dups_cost": 12.38928223,
- "write_cost": 2.5,
- "full_lookup_cost": 15,
- "total_cost": 29.88928223
+ "prefix_record_count": 4,
+ "tmp_table_records": 1,
+ "sj_inner_fanout": 101,
+ "rows": 4,
+ "dups_cost": 0.074183853,
+ "write_cost": 0.02564388,
+ "full_lookup_cost": 0.06503188,
+ "total_cost": 0.164859613
},
{
- "chosen_strategy": "SJ-Materialization"
+ "chosen_strategy": "FirstMatch"
}
- ]
+ ],
+ "rows_out": 1,
+ "rows_for_plan": 4
}
]
},
{
"plan_prefix": [],
- "table": "t10",
+ "table": "t2",
"best_access_path": {
"plan_details": {
"record_count": 1
@@ -3250,24 +3241,24 @@ explain extended select * from t1 where a in (select pk from t10) {
"considered_access_paths": [
{
"access_type": "scan",
- "rows": 10,
- "rows_after_scan": 10,
- "rows_after_filter": 10,
- "cost": 3.510986328,
+ "rows": 101,
+ "rows_after_filter": 101,
+ "rows_out": 101,
+ "cost": 0.025796905,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 10,
- "records_out": 10,
- "cost": 3.510986328,
+ "rows_read": 101,
+ "rows_out": 101,
+ "cost": 0.025796905,
"uses_join_buffering": false
}
},
- "rows_for_plan": 10,
- "cost_for_plan": 3.510986328,
+ "rows_for_plan": 101,
+ "cost_for_plan": 0.025796905,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
}
@@ -3276,31 +3267,50 @@ explain extended select * from t1 where a in (select pk from t10) {
{
"fix_semijoin_strategies_for_picked_join_order": [
{
- "semi_join_strategy": "SJ-Materialization",
+ "semi_join_strategy": "FirstMatch",
"join_order": [
{
- "table": "t10"
+ "table": "t2",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 4
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "rows": 101,
+ "rows_after_filter": 101,
+ "rows_out": 101,
+ "cost": 0.10318762,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 101,
+ "rows_out": 101,
+ "cost": 0.10318762,
+ "uses_join_buffering": false
+ }
+ }
}
]
}
]
},
{
- "best_join_order": ["t1", "<subquery2>"],
- "rows": 3,
- "cost": 8.664282227
+ "best_join_order": ["t1", "t2"],
+ "rows": 4,
+ "cost": 0.074183853
},
{
"substitute_best_equal": {
"condition": "WHERE",
- "resulting_condition": "1"
+ "resulting_condition": "t2.p = t1.a"
}
},
{
- "condition_on_constant_tables": "1",
- "computing_condition": []
- },
- {
"attaching_conditions_to_tables": {
"attached_conditions_computation": [],
"attached_conditions_summary": [
@@ -3309,12 +3319,8 @@ explain extended select * from t1 where a in (select pk from t10) {
"attached": null
},
{
- "table": "t10",
- "attached": null
- },
- {
- "table": "<subquery2>",
- "attached": null
+ "table": "t2",
+ "attached": "t2.p = t1.a"
}
]
}
@@ -3330,12 +3336,10 @@ explain extended select * from t1 where a in (select pk from t10) {
}
]
} 0 0
-drop table t0,t1,t11,t10,t12,t2;
+drop table t1,t2;
#
# Selectivities for columns and indexes.
#
-create table t0 (a int);
-insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (
pk int,
a int,
@@ -3343,7 +3347,7 @@ b int,
key pk(pk),
key pk_a(pk,a),
key pk_a_b(pk,a,b));
-insert into t1 select a,a,a from t0;
+insert into t1 select seq,seq,seq from seq_0_to_9;
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS (a,b) INDEXES ();
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
@@ -3451,7 +3455,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
"range_analysis": {
"table_scan": {
"rows": 10,
- "cost": 3.515869141
+ "cost": 0.01156405
},
"potential_range_indexes": [
{
@@ -3472,7 +3476,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
],
"best_covering_index_scan": {
"index": "pk_a_b",
- "cost": 2.760739566,
+ "cost": 0.007173242,
"chosen": true
},
"setup_range_conditions": [],
@@ -3485,7 +3489,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
"using_mrr": false,
"index_only": false,
"rows": 1,
- "cost": 1.270585794,
+ "cost": 0.002483968,
"chosen": true
},
{
@@ -3495,7 +3499,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
"using_mrr": false,
"index_only": false,
"rows": 1,
- "cost": 1.270829876,
+ "cost": 0.002483968,
"chosen": false,
"cause": "cost"
},
@@ -3506,7 +3510,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
"using_mrr": false,
"index_only": true,
"rows": 1,
- "cost": 0.746073957,
+ "cost": 0.001388369,
"chosen": true
}
],
@@ -3514,10 +3518,10 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
"intersecting_indexes": [
{
"index": "pk",
- "index_scan_cost": 0.525585794,
- "cumulated_index_scan_cost": 0.525585794,
- "disk_sweep_cost": 0.75,
- "cumulative_total_cost": 1.275585794,
+ "index_scan_cost": 0.000806227,
+ "cumulated_index_scan_cost": 0.000806227,
+ "disk_sweep_cost": 0.001143284,
+ "cumulative_total_cost": 0.001949511,
"usable": true,
"matching_rows_now": 1,
"intersect_covering_with_this_index": false,
@@ -3555,7 +3559,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
"ranges": ["(2,5,1) <= (pk,a,b) <= (2,5,1)"]
},
"rows_for_plan": 1,
- "cost_for_plan": 0.746073957,
+ "cost_for_plan": 0.001388369,
"chosen": true
}
}
@@ -3565,17 +3569,17 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
"rowid_filters": [
{
"key": "pk",
- "build_cost": 0.526585794,
+ "build_cost": 8.140695e-4,
"rows": 1
},
{
"key": "pk_a",
- "build_cost": 0.526829876,
+ "build_cost": 8.140695e-4,
"rows": 1
},
{
"key": "pk_a_b",
- "build_cost": 0.527073957,
+ "build_cost": 8.140695e-4,
"rows": 1
}
]
@@ -3618,7 +3622,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
"index": "pk",
"used_range_estimates": true,
"rows": 1,
- "cost": 1.250585794,
+ "cost": 0.001933826,
"chosen": true
},
{
@@ -3626,7 +3630,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
"index": "pk_a",
"used_range_estimates": true,
"rows": 1,
- "cost": 1.250829876,
+ "cost": 0.001933826,
"chosen": false,
"cause": "cost"
},
@@ -3635,7 +3639,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
"index": "pk_a_b",
"used_range_estimates": true,
"rows": 1,
- "cost": 0.726073957,
+ "cost": 0.000838227,
"chosen": true
},
{
@@ -3646,22 +3650,21 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
],
"chosen_access_method": {
"type": "ref",
- "records_read": 1,
- "records_out": 1,
- "cost": 0.726073957,
+ "rows_read": 1,
+ "rows_out": 1,
+ "cost": 0.000838227,
"uses_join_buffering": false
}
},
"rows_for_plan": 1,
- "cost_for_plan": 0.726073957,
- "pruned_by_hanging_leaf": true
+ "cost_for_plan": 0.000838227
}
]
},
{
"best_join_order": ["t1"],
"rows": 1,
- "cost": 0.726073957
+ "cost": 0.000838227
},
{
"substitute_best_equal": {
@@ -3693,7 +3696,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
} 0 0
set @@optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity;
set @@use_stat_tables= @save_use_stat_tables;
-drop table t0,t1;
+drop table t1;
set optimizer_trace="enabled=off";
#
# Tests added to show that sub-statements are not traced
@@ -3757,8 +3760,8 @@ select f1(a) from t1 {
"table": "t1",
"table_scan": {
"rows": 4,
- "read_cost": 1.003417969,
- "read_and_compare_cost": 2.003417969
+ "read_cost": 0.01049762,
+ "read_and_compare_cost": 0.01062562
}
}
]
@@ -3776,30 +3779,30 @@ select f1(a) from t1 {
{
"access_type": "scan",
"rows": 4,
- "rows_after_scan": 4,
"rows_after_filter": 4,
- "cost": 2.003417969,
+ "rows_out": 4,
+ "cost": 0.01062562,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 4,
- "records_out": 4,
- "cost": 2.003417969,
+ "rows_read": 4,
+ "rows_out": 4,
+ "cost": 0.01062562,
"uses_join_buffering": false
}
},
"rows_for_plan": 4,
- "cost_for_plan": 2.003417969
+ "cost_for_plan": 0.01062562
}
]
},
{
"best_join_order": ["t1"],
"rows": 4,
- "cost": 2.003417969
+ "cost": 0.01062562
},
{
"attaching_conditions_to_tables": {
@@ -3863,8 +3866,8 @@ select f2(a) from t1 {
"table": "t1",
"table_scan": {
"rows": 4,
- "read_cost": 1.003417969,
- "read_and_compare_cost": 2.003417969
+ "read_cost": 0.01049762,
+ "read_and_compare_cost": 0.01062562
}
}
]
@@ -3882,30 +3885,30 @@ select f2(a) from t1 {
{
"access_type": "scan",
"rows": 4,
- "rows_after_scan": 4,
"rows_after_filter": 4,
- "cost": 2.003417969,
+ "rows_out": 4,
+ "cost": 0.01062562,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 4,
- "records_out": 4,
- "cost": 2.003417969,
+ "rows_read": 4,
+ "rows_out": 4,
+ "cost": 0.01062562,
"uses_join_buffering": false
}
},
"rows_for_plan": 4,
- "cost_for_plan": 2.003417969
+ "cost_for_plan": 0.01062562
}
]
},
{
"best_join_order": ["t1"],
"rows": 4,
- "cost": 2.003417969
+ "cost": 0.01062562
},
{
"attaching_conditions_to_tables": {
@@ -3946,7 +3949,7 @@ a
2
select length(trace) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
length(trace)
-2470
+2451
set optimizer_trace_max_mem_size=100;
select * from t1;
a
@@ -3960,7 +3963,7 @@ select * from t1 {
"join_preparation": {
"select_id": 1,
"steps": [
- 2370 0
+ 2351 0
set optimizer_trace_max_mem_size=0;
select * from t1;
a
@@ -3968,7 +3971,7 @@ a
2
select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
QUERY TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE INSUFFICIENT_PRIVILEGES
-select * from t1 2470 0
+select * from t1 2451 0
drop table t1;
set optimizer_trace='enabled=off';
set @@optimizer_trace_max_mem_size= @save_optimizer_trace_max_mem_size;
@@ -3993,7 +3996,7 @@ explain delete from t0 where t0.a<3 {
"range_analysis": {
"table_scan": {
"rows": 10,
- "cost": 3.510986328
+ "cost": 0.01156405
},
"potential_range_indexes": [
{
@@ -4012,7 +4015,7 @@ explain delete from t0 where t0.a<3 {
"using_mrr": false,
"index_only": false,
"rows": 3,
- "cost": 2.771757383,
+ "cost": 0.004951706,
"chosen": true
}
],
@@ -4030,7 +4033,7 @@ explain delete from t0 where t0.a<3 {
"ranges": ["(NULL) < (a) < (3)"]
},
"rows_for_plan": 3,
- "cost_for_plan": 2.771757383,
+ "cost_for_plan": 0.004951706,
"chosen": true
}
}
@@ -4131,7 +4134,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
"range_analysis": {
"table_scan": {
"rows": 10,
- "cost": 3.510986328
+ "cost": 0.01156405
},
"potential_range_indexes": [
{
@@ -4142,7 +4145,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
],
"best_covering_index_scan": {
"index": "a",
- "cost": 2.755857945,
+ "cost": 0.007173242,
"chosen": true
},
"setup_range_conditions": [],
@@ -4155,7 +4158,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
"using_mrr": false,
"index_only": true,
"rows": 3,
- "cost": 1.196757383,
+ "cost": 0.001664909,
"chosen": true
}
],
@@ -4176,7 +4179,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
"ranges": ["(NULL) < (a) < (3)"]
},
"rows_for_plan": 3,
- "cost_for_plan": 1.196757383,
+ "cost_for_plan": 0.001664909,
"chosen": true
}
}
@@ -4196,7 +4199,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
"range_analysis": {
"table_scan": {
"rows": 10,
- "cost": 3.510986328
+ "cost": 0.01156405
},
"potential_range_indexes": [
{
@@ -4207,7 +4210,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
],
"best_covering_index_scan": {
"index": "a",
- "cost": 2.755857945,
+ "cost": 0.007173242,
"chosen": true
},
"setup_range_conditions": [],
@@ -4220,7 +4223,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
"using_mrr": false,
"index_only": true,
"rows": 3,
- "cost": 1.196757383,
+ "cost": 0.001664909,
"chosen": true
}
],
@@ -4241,7 +4244,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
"ranges": ["(NULL) < (a) < (3)"]
},
"rows_for_plan": 3,
- "cost_for_plan": 1.196757383,
+ "cost_for_plan": 0.001664909,
"chosen": true
}
}
@@ -4271,22 +4274,22 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
{
"access_type": "range",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.196757383,
+ "rows_out": 3,
+ "cost": 0.001664909,
"chosen": true
}
],
"chosen_access_method": {
"type": "range",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.196757383,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.001664909,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.196757383,
+ "cost_for_plan": 0.001664909,
"rest_of_plan": [
{
"plan_prefix": ["t0"],
@@ -4302,7 +4305,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
"used_range_estimates": false,
"cause": "not better than ref estimates",
"rows": 1,
- "cost": 2.176757383,
+ "cost": 0.002105081,
"chosen": true
},
{
@@ -4313,15 +4316,14 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
],
"chosen_access_method": {
"type": "ref",
- "records_read": 1,
- "records_out": 1,
- "cost": 2.176757383,
+ "rows_read": 1,
+ "rows_out": 1,
+ "cost": 0.002105081,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 3.373514767,
- "pruned_by_hanging_leaf": true
+ "cost_for_plan": 0.00376999
}
]
},
@@ -4336,22 +4338,22 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
{
"access_type": "range",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.196757383,
+ "rows_out": 3,
+ "cost": 0.001664909,
"chosen": true
}
],
"chosen_access_method": {
"type": "range",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.196757383,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.001664909,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.196757383,
+ "cost_for_plan": 0.001664909,
"rest_of_plan": [
{
"plan_prefix": ["t1"],
@@ -4368,7 +4370,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
"used_range_estimates": false,
"cause": "not better than ref estimates",
"rows": 2,
- "cost": 2.853514767,
+ "cost": 0.002519891,
"chosen": true
},
{
@@ -4379,14 +4381,14 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
],
"chosen_access_method": {
"type": "ref",
- "records_read": 2,
- "records_out": 1.166666667,
- "cost": 2.853514767,
+ "rows_read": 2,
+ "rows_out": 2,
+ "cost": 0.002519891,
"uses_join_buffering": false
}
},
"rows_for_plan": 6,
- "cost_for_plan": 4.05027215,
+ "cost_for_plan": 0.0041848,
"pruned_by_cost": true
}
]
@@ -4396,7 +4398,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
{
"best_join_order": ["t0", "t1"],
"rows": 3,
- "cost": 3.373514767
+ "cost": 0.00376999
},
{
"substitute_best_equal": {
@@ -4505,8 +4507,8 @@ explain select * from (select rand() from t1)q {
"table": "t1",
"table_scan": {
"rows": 3,
- "read_cost": 1.002563477,
- "read_and_compare_cost": 1.752563477
+ "read_cost": 0.010373215,
+ "read_and_compare_cost": 0.010469215
}
}
]
@@ -4524,30 +4526,30 @@ explain select * from (select rand() from t1)q {
{
"access_type": "scan",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.752563477,
+ "rows_out": 3,
+ "cost": 0.010469215,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.752563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.010469215,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.752563477
+ "cost_for_plan": 0.010469215
}
]
},
{
"best_join_order": ["t1"],
"rows": 3,
- "cost": 1.752563477
+ "cost": 0.010469215
},
{
"attaching_conditions_to_tables": {
@@ -4579,8 +4581,8 @@ explain select * from (select rand() from t1)q {
"table": "<derived2>",
"table_scan": {
"rows": 3,
- "read_cost": 3,
- "read_and_compare_cost": 3.75
+ "read_cost": 0.01235805,
+ "read_and_compare_cost": 0.012461052
}
}
]
@@ -4598,30 +4600,30 @@ explain select * from (select rand() from t1)q {
{
"access_type": "scan",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 3.75,
+ "rows_out": 3,
+ "cost": 0.012461052,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 3.75,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.012461052,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 3.75
+ "cost_for_plan": 0.012461052
}
]
},
{
"best_join_order": ["<derived2>"],
"rows": 3,
- "cost": 3.75
+ "cost": 0.012461052
},
{
"attaching_conditions_to_tables": {
@@ -4773,24 +4775,24 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
"table": "t1",
"table_scan": {
"rows": 3,
- "read_cost": 1.002563477,
- "read_and_compare_cost": 1.752563477
+ "read_cost": 0.010373215,
+ "read_and_compare_cost": 0.010469215
}
},
{
"table": "t_inner_1",
"table_scan": {
"rows": 3,
- "read_cost": 1.002563477,
- "read_and_compare_cost": 1.752563477
+ "read_cost": 0.010373215,
+ "read_and_compare_cost": 0.010469215
}
},
{
"table": "t_inner_2",
"table_scan": {
"rows": 3,
- "read_cost": 1.002563477,
- "read_and_compare_cost": 1.752563477
+ "read_cost": 0.010373215,
+ "read_and_compare_cost": 0.010469215
}
}
]
@@ -4816,23 +4818,23 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
{
"access_type": "scan",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.752563477,
+ "rows_out": 3,
+ "cost": 0.010469215,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.752563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.010469215,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.752563477,
+ "cost_for_plan": 0.010469215,
"rest_of_plan": [
{
"plan_prefix": ["t_inner_1"],
@@ -4845,23 +4847,23 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 3.890063477,
+ "rows_out": 3,
+ "cost": 0.011487607,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 3.890063477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.011487607,
"uses_join_buffering": true
}
},
"rows_for_plan": 9,
- "cost_for_plan": 5.642626953
+ "cost_for_plan": 0.021956822
}
]
},
@@ -4876,23 +4878,23 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
{
"access_type": "scan",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.752563477,
+ "rows_out": 3,
+ "cost": 0.010469215,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.752563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.010469215,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.752563477,
+ "cost_for_plan": 0.010469215,
"pruned_by_heuristic": true
}
]
@@ -4913,23 +4915,23 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
{
"access_type": "scan",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.752563477,
+ "rows_out": 3,
+ "cost": 0.010469215,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.752563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.010469215,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.752563477,
+ "cost_for_plan": 0.010469215,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -4943,23 +4945,23 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 3.890063477,
+ "rows_out": 3,
+ "cost": 0.011487607,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 3.890063477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.011487607,
"uses_join_buffering": true
}
},
"rows_for_plan": 9,
- "cost_for_plan": 5.642626953,
+ "cost_for_plan": 0.021956822,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -4973,46 +4975,51 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 9.177563477,
+ "rows_out": 3,
+ "cost": 0.015167773,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 9.177563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.015167773,
"uses_join_buffering": true
}
},
"rows_for_plan": 27,
- "cost_for_plan": 14.82019043,
+ "cost_for_plan": 0.037124595,
"semijoin_strategy_choice": [
{
"strategy": "FirstMatch",
- "records": 3,
- "cost": 22.7833252
+ "rows": 3,
+ "cost": 0.136099795
},
{
"strategy": "SJ-Materialization",
- "records": 3,
- "cost": 10.64519043
+ "rows": 3,
+ "cost": 0.059481685
},
{
"strategy": "DuplicateWeedout",
- "records": 3,
- "dups_cost": 14.82019043,
- "write_cost": 1.45,
- "full_lookup_cost": 4.05,
- "total_cost": 20.32019043
+ "prefix_record_count": 3,
+ "tmp_table_records": 1,
+ "sj_inner_fanout": 9,
+ "rows": 3,
+ "dups_cost": 0.037124595,
+ "write_cost": 0.02548291,
+ "full_lookup_cost": 0.00434619,
+ "total_cost": 0.066953695
},
{
"chosen_strategy": "SJ-Materialization"
}
- ]
+ ],
+ "rows_out": 0.333333333,
+ "rows_for_plan": 3
}
]
},
@@ -5027,23 +5034,23 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 3.890063477,
+ "rows_out": 3,
+ "cost": 0.011487607,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 3.890063477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.011487607,
"uses_join_buffering": true
}
},
"rows_for_plan": 9,
- "cost_for_plan": 5.642626953,
+ "cost_for_plan": 0.021956822,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
}
@@ -5060,23 +5067,23 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
{
"access_type": "scan",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.752563477,
+ "rows_out": 3,
+ "cost": 0.010469215,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.752563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.010469215,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.752563477,
+ "cost_for_plan": 0.010469215,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -5091,23 +5098,23 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
{
"access_type": "scan",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.752563477,
+ "rows_out": 3,
+ "cost": 0.010469215,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.752563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.010469215,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.752563477,
+ "cost_for_plan": 0.010469215,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
}
@@ -5131,7 +5138,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
{
"best_join_order": ["t1", "<subquery2>"],
"rows": 3,
- "cost": 10.64519043
+ "cost": 0.059481685
},
{
"substitute_best_equal": {
@@ -5183,11 +5190,11 @@ explain select * from t1 t_outer_1,t2 t_outer_2 where t_outer_1.a in (select t_
t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t_outer_1 ALL NULL NULL NULL NULL 3
-1 PRIMARY t_inner_1 ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
-1 PRIMARY t_inner_2 ALL NULL NULL NULL NULL 9 FirstMatch(t_outer_1); Using join buffer (incremental, BNL join)
+1 PRIMARY t_inner_1 ALL NULL NULL NULL NULL 3 Using where; Start temporary; Using join buffer (flat, BNL join)
+1 PRIMARY t_inner_2 ALL NULL NULL NULL NULL 9 End temporary; Using join buffer (incremental, BNL join)
+1 PRIMARY t_inner_4 ALL NULL NULL NULL NULL 3 Start temporary; Using join buffer (incremental, BNL join)
1 PRIMARY t_outer_2 ALL NULL NULL NULL NULL 9 Using join buffer (incremental, BNL join)
-1 PRIMARY t_inner_4 ALL NULL NULL NULL NULL 3 Using join buffer (incremental, BNL join)
-1 PRIMARY t_inner_3 ALL NULL NULL NULL NULL 9 Using where; FirstMatch(t_outer_2); Using join buffer (incremental, BNL join)
+1 PRIMARY t_inner_3 ALL NULL NULL NULL NULL 9 Using where; End temporary; Using join buffer (incremental, BNL join)
select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
QUERY TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE INSUFFICIENT_PRIVILEGES
explain select * from t1 t_outer_1,t2 t_outer_2 where t_outer_1.a in (select t_inner_1.a from t2 t_inner_2, t1 t_inner_1) and
@@ -5346,48 +5353,48 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"table": "t_outer_1",
"table_scan": {
"rows": 3,
- "read_cost": 1.002563477,
- "read_and_compare_cost": 1.752563477
+ "read_cost": 0.010373215,
+ "read_and_compare_cost": 0.010469215
}
},
{
"table": "t_outer_2",
"table_scan": {
"rows": 9,
- "read_cost": 1.00769043,
- "read_and_compare_cost": 3.25769043
+ "read_cost": 0.011119645,
+ "read_and_compare_cost": 0.011407645
}
},
{
"table": "t_inner_2",
"table_scan": {
"rows": 9,
- "read_cost": 1.00769043,
- "read_and_compare_cost": 3.25769043
+ "read_cost": 0.011119645,
+ "read_and_compare_cost": 0.011407645
}
},
{
"table": "t_inner_1",
"table_scan": {
"rows": 3,
- "read_cost": 1.002563477,
- "read_and_compare_cost": 1.752563477
+ "read_cost": 0.010373215,
+ "read_and_compare_cost": 0.010469215
}
},
{
"table": "t_inner_3",
"table_scan": {
"rows": 9,
- "read_cost": 1.00769043,
- "read_and_compare_cost": 3.25769043
+ "read_cost": 0.011119645,
+ "read_and_compare_cost": 0.011407645
}
},
{
"table": "t_inner_4",
"table_scan": {
"rows": 3,
- "read_cost": 1.002563477,
- "read_and_compare_cost": 1.752563477
+ "read_cost": 0.010373215,
+ "read_and_compare_cost": 0.010469215
}
}
]
@@ -5420,23 +5427,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.752563477,
+ "rows_out": 3,
+ "cost": 0.010469215,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.752563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.010469215,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.752563477,
+ "cost_for_plan": 0.010469215,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -5450,23 +5457,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 3.890063477,
+ "rows_out": 3,
+ "cost": 0.011487607,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 3.890063477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.011487607,
"uses_join_buffering": true
}
},
"rows_for_plan": 9,
- "cost_for_plan": 5.642626953,
+ "cost_for_plan": 0.021956822,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -5480,41 +5487,46 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 25.53269043,
+ "rows_out": 9,
+ "cost": 0.024407731,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 25.53269043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.024407731,
"uses_join_buffering": true
}
},
"rows_for_plan": 81,
- "cost_for_plan": 31.17531738,
+ "cost_for_plan": 0.046364553,
"semijoin_strategy_choice": [
{
"strategy": "FirstMatch",
- "records": 3,
- "cost": 36.32946777
+ "rows": 3,
+ "cost": 0.144545665
},
{
"strategy": "DuplicateWeedout",
- "records": 3,
- "dups_cost": 31.17531738,
- "write_cost": 1.45,
- "full_lookup_cost": 12.15,
- "total_cost": 44.77531738
+ "prefix_record_count": 3,
+ "tmp_table_records": 1,
+ "sj_inner_fanout": 27,
+ "rows": 3,
+ "dups_cost": 0.046364553,
+ "write_cost": 0.02548291,
+ "full_lookup_cost": 0.01303857,
+ "total_cost": 0.084886033
},
{
- "chosen_strategy": "FirstMatch"
+ "chosen_strategy": "DuplicateWeedout"
}
],
+ "rows_out": 0.333333333,
+ "rows_for_plan": 3,
"rest_of_plan": [
{
"plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"],
@@ -5527,23 +5539,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 11.69519043,
+ "rows_out": 9,
+ "cost": 0.017384389,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 11.69519043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.017384389,
"uses_join_buffering": true
}
},
"rows_for_plan": 27,
- "cost_for_plan": 48.0246582,
+ "cost_for_plan": 0.102270422,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -5562,23 +5574,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 30.10256348,
+ "rows_out": 3,
+ "cost": 0.034425181,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 30.10256348,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.034425181,
"uses_join_buffering": true
}
},
"rows_for_plan": 81,
- "cost_for_plan": 78.12722168,
+ "cost_for_plan": 0.136695603,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -5598,41 +5610,46 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 285.7451904,
+ "rows_out": 9,
+ "cost": 0.261522361,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 285.7451904,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.261522361,
"uses_join_buffering": true
}
},
"rows_for_plan": 729,
- "cost_for_plan": 363.8724121,
+ "cost_for_plan": 0.398217964,
"semijoin_strategy_choice": [
{
"strategy": "FirstMatch",
- "records": 27,
- "cost": 359.2167969
+ "rows": 27,
+ "cost": 1.308958472
},
{
"strategy": "DuplicateWeedout",
- "records": 27,
- "dups_cost": 363.8724121,
- "write_cost": 5.05,
- "full_lookup_cost": 109.35,
- "total_cost": 478.2724121
+ "prefix_record_count": 27,
+ "tmp_table_records": 1,
+ "sj_inner_fanout": 27,
+ "rows": 27,
+ "dups_cost": 0.398217964,
+ "write_cost": 0.02934619,
+ "full_lookup_cost": 0.11734713,
+ "total_cost": 0.544911284
},
{
- "chosen_strategy": "FirstMatch"
+ "chosen_strategy": "DuplicateWeedout"
}
- ]
+ ],
+ "rows_out": 0.333333333,
+ "rows_for_plan": 27
}
]
},
@@ -5652,23 +5669,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 88.30769043,
+ "rows_out": 9,
+ "cost": 0.079988779,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 88.30769043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.079988779,
"uses_join_buffering": true
}
},
"rows_for_plan": 243,
- "cost_for_plan": 136.3323486,
+ "cost_for_plan": 0.182259201,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
}
@@ -5685,23 +5702,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 4.565063477,
+ "rows_out": 3,
+ "cost": 0.012583195,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 4.565063477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.012583195,
"uses_join_buffering": true
}
},
"rows_for_plan": 9,
- "cost_for_plan": 40.89453125,
+ "cost_for_plan": 0.097469228,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -5720,23 +5737,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 31.60769043,
+ "rows_out": 9,
+ "cost": 0.034268023,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 31.60769043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.034268023,
"uses_join_buffering": true
}
},
"rows_for_plan": 81,
- "cost_for_plan": 72.50222168,
+ "cost_for_plan": 0.131737251,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -5756,37 +5773,41 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 285.7451904,
+ "rows_out": 9,
+ "cost": 0.261522361,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 285.7451904,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.261522361,
"uses_join_buffering": true
}
},
"rows_for_plan": 729,
- "cost_for_plan": 358.2474121,
+ "cost_for_plan": 0.393259612,
"semijoin_strategy_choice": [
{
"strategy": "DuplicateWeedout",
- "records": 27,
- "dups_cost": 358.2474121,
- "write_cost": 5.05,
- "full_lookup_cost": 109.35,
- "total_cost": 472.6474121
+ "prefix_record_count": 3,
+ "tmp_table_records": 9,
+ "sj_inner_fanout": 27,
+ "rows": 27,
+ "dups_cost": 0.393259612,
+ "write_cost": 0.02934619,
+ "full_lookup_cost": 0.11734713,
+ "total_cost": 0.539952932
},
{
"chosen_strategy": "DuplicateWeedout"
}
],
- "pruned_by_cost": true
+ "rows_out": 0.333333333,
+ "rows_for_plan": 27
}
]
},
@@ -5806,23 +5827,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 31.60769043,
+ "rows_out": 9,
+ "cost": 0.034268023,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 31.60769043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.034268023,
"uses_join_buffering": true
}
},
"rows_for_plan": 81,
- "cost_for_plan": 72.50222168,
+ "cost_for_plan": 0.131737251,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
}
@@ -5839,23 +5860,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 11.69519043,
+ "rows_out": 9,
+ "cost": 0.017384389,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 11.69519043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.017384389,
"uses_join_buffering": true
}
},
"rows_for_plan": 27,
- "cost_for_plan": 48.0246582,
+ "cost_for_plan": 0.102270422,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
}
@@ -5872,23 +5893,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 25.53269043,
+ "rows_out": 9,
+ "cost": 0.024407731,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 25.53269043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.024407731,
"uses_join_buffering": true
}
},
"rows_for_plan": 81,
- "cost_for_plan": 31.17531738,
+ "cost_for_plan": 0.046364553,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -5902,37 +5923,175 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 231.0701904,
+ "rows_out": 9,
+ "cost": 0.172779733,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 231.0701904,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.172779733,
"uses_join_buffering": true
}
},
"rows_for_plan": 729,
- "cost_for_plan": 262.2455078,
+ "cost_for_plan": 0.219144286,
"semijoin_strategy_choice": [
{
"strategy": "DuplicateWeedout",
- "records": 27,
- "dups_cost": 262.2455078,
- "write_cost": 5.05,
- "full_lookup_cost": 109.35,
- "total_cost": 376.6455078
+ "prefix_record_count": 3,
+ "tmp_table_records": 9,
+ "sj_inner_fanout": 27,
+ "rows": 27,
+ "dups_cost": 0.219144286,
+ "write_cost": 0.02934619,
+ "full_lookup_cost": 0.11734713,
+ "total_cost": 0.365837606
},
{
"chosen_strategy": "DuplicateWeedout"
}
],
- "pruned_by_cost": true
+ "rows_out": 0.333333333,
+ "rows_for_plan": 27,
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_outer_2",
+ "t_inner_2"
+ ],
+ "table": "t_inner_4",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 27
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 3,
+ "rows_after_filter": 3,
+ "rows_out": 3,
+ "cost": 0.034425181,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.034425181,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 81,
+ "cost_for_plan": 0.400262787,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_outer_2",
+ "t_inner_2",
+ "t_inner_4"
+ ],
+ "table": "t_inner_3",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 81
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 9,
+ "rows_after_filter": 9,
+ "rows_out": 9,
+ "cost": 0.261522361,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.261522361,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 729,
+ "cost_for_plan": 0.661785148,
+ "semijoin_strategy_choice": [
+ {
+ "strategy": "FirstMatch",
+ "rows": 27,
+ "cost": 1.572525656
+ },
+ {
+ "strategy": "DuplicateWeedout",
+ "prefix_record_count": 27,
+ "tmp_table_records": 1,
+ "sj_inner_fanout": 27,
+ "rows": 27,
+ "dups_cost": 0.661785148,
+ "write_cost": 0.02934619,
+ "full_lookup_cost": 0.11734713,
+ "total_cost": 0.808478468
+ },
+ {
+ "chosen_strategy": "DuplicateWeedout"
+ }
+ ],
+ "rows_out": 0.333333333,
+ "rows_for_plan": 27,
+ "pruned_by_cost": true
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_outer_2",
+ "t_inner_2"
+ ],
+ "table": "t_inner_3",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 27
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 9,
+ "rows_after_filter": 9,
+ "rows_out": 9,
+ "cost": 0.079988779,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.079988779,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 243,
+ "cost_for_plan": 0.445826385,
+ "semijoin_strategy_choice": [],
+ "pruned_by_heuristic": true
+ }
+ ]
},
{
"plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"],
@@ -5945,23 +6104,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 77.69006348,
+ "rows_out": 3,
+ "cost": 0.067546675,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 77.69006348,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.067546675,
"uses_join_buffering": true
}
},
"rows_for_plan": 243,
- "cost_for_plan": 108.8653809,
+ "cost_for_plan": 0.113911228,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -5980,23 +6139,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 768.7076904,
+ "rows_out": 9,
+ "cost": 0.628637851,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 768.7076904,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
"uses_join_buffering": true
}
},
"rows_for_plan": 2187,
- "cost_for_plan": 877.5730713,
+ "cost_for_plan": 0.742549079,
"semijoin_strategy_choice": [],
"pruned_by_cost": true
},
@@ -6016,23 +6175,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 768.7076904,
+ "rows_out": 9,
+ "cost": 0.628637851,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 768.7076904,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
"uses_join_buffering": true
}
},
"rows_for_plan": 2187,
- "cost_for_plan": 877.5730713,
+ "cost_for_plan": 0.742549079,
"semijoin_strategy_choice": [],
"pruned_by_cost": true
}
@@ -6049,25 +6208,98 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 231.0701904,
+ "rows_out": 9,
+ "cost": 0.172779733,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 231.0701904,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.172779733,
"uses_join_buffering": true
}
},
"rows_for_plan": 729,
- "cost_for_plan": 262.2455078,
+ "cost_for_plan": 0.219144286,
"semijoin_strategy_choice": [],
- "pruned_by_heuristic": true
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_outer_2",
+ "t_inner_3"
+ ],
+ "table": "t_inner_2",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 729
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 9,
+ "rows_after_filter": 9,
+ "rows_out": 9,
+ "cost": 1.863098263,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 1.863098263,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 6561,
+ "cost_for_plan": 2.082242549,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_outer_2",
+ "t_inner_3"
+ ],
+ "table": "t_inner_4",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 729
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 3,
+ "rows_after_filter": 3,
+ "rows_out": 3,
+ "cost": 0.657280297,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.657280297,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 2187,
+ "cost_for_plan": 0.876424583,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true
+ }
+ ]
}
]
},
@@ -6082,23 +6314,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 9.177563477,
+ "rows_out": 3,
+ "cost": 0.015167773,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 9.177563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.015167773,
"uses_join_buffering": true
}
},
"rows_for_plan": 27,
- "cost_for_plan": 14.82019043,
+ "cost_for_plan": 0.037124595,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -6112,23 +6344,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 79.19519043,
+ "rows_out": 9,
+ "cost": 0.065198341,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 79.19519043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.065198341,
"uses_join_buffering": true
}
},
"rows_for_plan": 243,
- "cost_for_plan": 94.01538086,
+ "cost_for_plan": 0.102322936,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -6147,23 +6379,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 768.7076904,
+ "rows_out": 9,
+ "cost": 0.628637851,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 768.7076904,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
"uses_join_buffering": true
}
},
"rows_for_plan": 2187,
- "cost_for_plan": 862.7230713,
+ "cost_for_plan": 0.730960787,
"semijoin_strategy_choice": [],
"pruned_by_cost": true
},
@@ -6183,23 +6415,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 768.7076904,
+ "rows_out": 9,
+ "cost": 0.628637851,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 768.7076904,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
"uses_join_buffering": true
}
},
"rows_for_plan": 2187,
- "cost_for_plan": 862.7230713,
+ "cost_for_plan": 0.730960787,
"semijoin_strategy_choice": [],
"pruned_by_cost": true
}
@@ -6216,23 +6448,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 79.19519043,
+ "rows_out": 9,
+ "cost": 0.065198341,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 79.19519043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.065198341,
"uses_join_buffering": true
}
},
"rows_for_plan": 243,
- "cost_for_plan": 94.01538086,
+ "cost_for_plan": 0.102322936,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -6247,23 +6479,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 79.19519043,
+ "rows_out": 9,
+ "cost": 0.065198341,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 79.19519043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.065198341,
"uses_join_buffering": true
}
},
"rows_for_plan": 243,
- "cost_for_plan": 94.01538086,
+ "cost_for_plan": 0.102322936,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
}
@@ -6280,23 +6512,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 25.53269043,
+ "rows_out": 9,
+ "cost": 0.024407731,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 25.53269043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.024407731,
"uses_join_buffering": true
}
},
"rows_for_plan": 81,
- "cost_for_plan": 31.17531738,
+ "cost_for_plan": 0.046364553,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -6310,23 +6542,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 231.0701904,
+ "rows_out": 9,
+ "cost": 0.172779733,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 231.0701904,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.172779733,
"uses_join_buffering": true
}
},
"rows_for_plan": 729,
- "cost_for_plan": 262.2455078,
+ "cost_for_plan": 0.219144286,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -6345,23 +6577,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 2299.60769,
+ "rows_out": 9,
+ "cost": 1.863098263,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 2299.60769,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 1.863098263,
"uses_join_buffering": true
}
},
"rows_for_plan": 6561,
- "cost_for_plan": 2561.853198,
+ "cost_for_plan": 2.082242549,
"semijoin_strategy_choice": [],
"pruned_by_cost": true
},
@@ -6381,23 +6613,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 767.2025635,
+ "rows_out": 3,
+ "cost": 0.657280297,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 767.2025635,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.657280297,
"uses_join_buffering": true
}
},
"rows_for_plan": 2187,
- "cost_for_plan": 1029.448071,
+ "cost_for_plan": 0.876424583,
"semijoin_strategy_choice": [],
"pruned_by_cost": true
}
@@ -6414,23 +6646,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 231.0701904,
+ "rows_out": 9,
+ "cost": 0.172779733,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 231.0701904,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.172779733,
"uses_join_buffering": true
}
},
"rows_for_plan": 729,
- "cost_for_plan": 262.2455078,
+ "cost_for_plan": 0.219144286,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -6445,23 +6677,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 77.69006348,
+ "rows_out": 3,
+ "cost": 0.067546675,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 77.69006348,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.067546675,
"uses_join_buffering": true
}
},
"rows_for_plan": 243,
- "cost_for_plan": 108.8653809,
+ "cost_for_plan": 0.113911228,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -6480,23 +6712,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 768.7076904,
+ "rows_out": 9,
+ "cost": 0.628637851,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 768.7076904,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
"uses_join_buffering": true
}
},
"rows_for_plan": 2187,
- "cost_for_plan": 877.5730713,
+ "cost_for_plan": 0.742549079,
"semijoin_strategy_choice": [],
"pruned_by_cost": true
},
@@ -6516,23 +6748,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 768.7076904,
+ "rows_out": 9,
+ "cost": 0.628637851,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 768.7076904,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
"uses_join_buffering": true
}
},
"rows_for_plan": 2187,
- "cost_for_plan": 877.5730713,
+ "cost_for_plan": 0.742549079,
"semijoin_strategy_choice": [],
"pruned_by_cost": true
}
@@ -6553,23 +6785,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 9.67019043,
+ "rows_out": 9,
+ "cost": 0.014097625,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 9.67019043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.014097625,
"uses_join_buffering": true
}
},
"rows_for_plan": 27,
- "cost_for_plan": 11.42275391,
+ "cost_for_plan": 0.02456684,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -6584,23 +6816,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 9.67019043,
+ "rows_out": 9,
+ "cost": 0.014097625,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 9.67019043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.014097625,
"uses_join_buffering": true
}
},
"rows_for_plan": 27,
- "cost_for_plan": 11.42275391,
+ "cost_for_plan": 0.02456684,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -6615,23 +6847,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 3.890063477,
+ "rows_out": 3,
+ "cost": 0.011487607,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 3.890063477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.011487607,
"uses_join_buffering": true
}
},
"rows_for_plan": 9,
- "cost_for_plan": 5.642626953,
+ "cost_for_plan": 0.021956822,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -6646,23 +6878,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 9.67019043,
+ "rows_out": 9,
+ "cost": 0.014097625,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 9.67019043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.014097625,
"uses_join_buffering": true
}
},
"rows_for_plan": 27,
- "cost_for_plan": 11.42275391,
+ "cost_for_plan": 0.02456684,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
}
@@ -6679,23 +6911,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.752563477,
+ "rows_out": 3,
+ "cost": 0.010469215,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.752563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.010469215,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.752563477,
+ "cost_for_plan": 0.010469215,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -6710,23 +6942,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 3.25769043,
+ "rows_out": 9,
+ "cost": 0.011407645,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 3.25769043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.011407645,
"uses_join_buffering": false
}
},
"rows_for_plan": 9,
- "cost_for_plan": 3.25769043,
+ "cost_for_plan": 0.011407645,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -6741,23 +6973,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 3.25769043,
+ "rows_out": 9,
+ "cost": 0.011407645,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 3.25769043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.011407645,
"uses_join_buffering": false
}
},
"rows_for_plan": 9,
- "cost_for_plan": 3.25769043,
+ "cost_for_plan": 0.011407645,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -6772,23 +7004,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.752563477,
+ "rows_out": 3,
+ "cost": 0.010469215,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.752563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.010469215,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.752563477,
+ "cost_for_plan": 0.010469215,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -6803,23 +7035,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 3.25769043,
+ "rows_out": 9,
+ "cost": 0.011407645,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 3.25769043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.011407645,
"uses_join_buffering": false
}
},
"rows_for_plan": 9,
- "cost_for_plan": 3.25769043,
+ "cost_for_plan": 0.011407645,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
}
@@ -6828,118 +7060,10 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"fix_semijoin_strategies_for_picked_join_order": [
{
- "semi_join_strategy": "FirstMatch",
- "join_order": [
- {
- "table": "t_inner_4",
- "best_access_path": {
- "plan_details": {
- "record_count": 27
- },
- "considered_access_paths": [
- {
- "access_type": "scan",
- "rows": 3,
- "rows_after_scan": 3,
- "rows_after_filter": 3,
- "cost": 47.31921387,
- "index_only": false,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 47.31921387,
- "uses_join_buffering": false
- }
- }
- },
- {
- "table": "t_inner_3",
- "best_access_path": {
- "plan_details": {
- "record_count": 81
- },
- "considered_access_paths": [
- {
- "access_type": "scan",
- "rows": 9,
- "rows_after_scan": 9,
- "rows_after_filter": 9,
- "cost": 263.8729248,
- "index_only": false,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 263.8729248,
- "uses_join_buffering": false
- }
- }
- }
- ]
+ "semi_join_strategy": "DuplicateWeedout"
},
{
- "semi_join_strategy": "FirstMatch",
- "join_order": [
- {
- "table": "t_inner_1",
- "best_access_path": {
- "plan_details": {
- "record_count": 3
- },
- "considered_access_paths": [
- {
- "access_type": "scan",
- "rows": 3,
- "rows_after_scan": 3,
- "rows_after_filter": 3,
- "cost": 5.25769043,
- "index_only": false,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 5.25769043,
- "uses_join_buffering": false
- }
- }
- },
- {
- "table": "t_inner_2",
- "best_access_path": {
- "plan_details": {
- "record_count": 9
- },
- "considered_access_paths": [
- {
- "access_type": "scan",
- "rows": 9,
- "rows_after_scan": 9,
- "rows_after_filter": 9,
- "cost": 29.31921387,
- "index_only": false,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 29.31921387,
- "uses_join_buffering": false
- }
- }
- }
- ]
+ "semi_join_strategy": "DuplicateWeedout"
}
]
},
@@ -6948,12 +7072,12 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"t_outer_1",
"t_inner_1",
"t_inner_2",
- "t_outer_2",
"t_inner_4",
+ "t_outer_2",
"t_inner_3"
],
"rows": 27,
- "cost": 359.2167969
+ "cost": 0.539952932
},
{
"substitute_best_equal": {
@@ -6978,11 +7102,11 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"attached": null
},
{
- "table": "t_outer_2",
+ "table": "t_inner_4",
"attached": null
},
{
- "table": "t_inner_4",
+ "table": "t_outer_2",
"attached": null
},
{
@@ -7173,48 +7297,48 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"table": "t_outer_1",
"table_scan": {
"rows": 3,
- "read_cost": 1.002563477,
- "read_and_compare_cost": 1.752563477
+ "read_cost": 0.010373215,
+ "read_and_compare_cost": 0.010469215
}
},
{
"table": "t_outer_2",
"table_scan": {
"rows": 9,
- "read_cost": 1.00769043,
- "read_and_compare_cost": 3.25769043
+ "read_cost": 0.011119645,
+ "read_and_compare_cost": 0.011407645
}
},
{
"table": "t_inner_2",
"table_scan": {
"rows": 9,
- "read_cost": 1.00769043,
- "read_and_compare_cost": 3.25769043
+ "read_cost": 0.011119645,
+ "read_and_compare_cost": 0.011407645
}
},
{
"table": "t_inner_1",
"table_scan": {
"rows": 3,
- "read_cost": 1.002563477,
- "read_and_compare_cost": 1.752563477
+ "read_cost": 0.010373215,
+ "read_and_compare_cost": 0.010469215
}
},
{
"table": "t_inner_3",
"table_scan": {
"rows": 9,
- "read_cost": 1.00769043,
- "read_and_compare_cost": 3.25769043
+ "read_cost": 0.011119645,
+ "read_and_compare_cost": 0.011407645
}
},
{
"table": "t_inner_4",
"table_scan": {
"rows": 3,
- "read_cost": 1.002563477,
- "read_and_compare_cost": 1.752563477
+ "read_cost": 0.010373215,
+ "read_and_compare_cost": 0.010469215
}
}
]
@@ -7245,23 +7369,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.752563477,
+ "rows_out": 3,
+ "cost": 0.010469215,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.752563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.010469215,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.752563477,
+ "cost_for_plan": 0.010469215,
"rest_of_plan": [
{
"plan_prefix": ["t_inner_1"],
@@ -7274,23 +7398,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 9.67019043,
+ "rows_out": 9,
+ "cost": 0.014097625,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 9.67019043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.014097625,
"uses_join_buffering": true
}
},
"rows_for_plan": 27,
- "cost_for_plan": 11.42275391
+ "cost_for_plan": 0.02456684
}
]
},
@@ -7305,23 +7429,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 3.25769043,
+ "rows_out": 9,
+ "cost": 0.011407645,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 3.25769043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.011407645,
"uses_join_buffering": false
}
},
"rows_for_plan": 9,
- "cost_for_plan": 3.25769043,
+ "cost_for_plan": 0.011407645,
"pruned_by_heuristic": true
}
]
@@ -7339,23 +7463,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.752563477,
+ "rows_out": 3,
+ "cost": 0.010469215,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.752563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.010469215,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.752563477,
+ "cost_for_plan": 0.010469215,
"rest_of_plan": [
{
"plan_prefix": ["t_inner_4"],
@@ -7368,23 +7492,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 9.67019043,
+ "rows_out": 9,
+ "cost": 0.014097625,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 9.67019043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.014097625,
"uses_join_buffering": true
}
},
"rows_for_plan": 27,
- "cost_for_plan": 11.42275391
+ "cost_for_plan": 0.02456684
}
]
},
@@ -7399,23 +7523,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 3.25769043,
+ "rows_out": 9,
+ "cost": 0.011407645,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 3.25769043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.011407645,
"uses_join_buffering": false
}
},
"rows_for_plan": 9,
- "cost_for_plan": 3.25769043,
+ "cost_for_plan": 0.011407645,
"pruned_by_heuristic": true
}
]
@@ -7436,23 +7560,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.752563477,
+ "rows_out": 3,
+ "cost": 0.010469215,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.752563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.010469215,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.752563477,
+ "cost_for_plan": 0.010469215,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -7466,23 +7590,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 3.890063477,
+ "rows_out": 3,
+ "cost": 0.011487607,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 3.890063477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.011487607,
"uses_join_buffering": true
}
},
"rows_for_plan": 9,
- "cost_for_plan": 5.642626953,
+ "cost_for_plan": 0.021956822,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -7496,46 +7620,51 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 25.53269043,
+ "rows_out": 9,
+ "cost": 0.024407731,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 25.53269043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.024407731,
"uses_join_buffering": true
}
},
"rows_for_plan": 81,
- "cost_for_plan": 31.17531738,
+ "cost_for_plan": 0.046364553,
"semijoin_strategy_choice": [
{
"strategy": "FirstMatch",
- "records": 3,
- "cost": 36.32946777
+ "rows": 3,
+ "cost": 0.144545665
},
{
"strategy": "SJ-Materialization",
- "records": 3,
- "cost": 19.12531738
+ "rows": 3,
+ "cost": 0.065031175
},
{
"strategy": "DuplicateWeedout",
- "records": 3,
- "dups_cost": 31.17531738,
- "write_cost": 1.45,
- "full_lookup_cost": 12.15,
- "total_cost": 44.77531738
+ "prefix_record_count": 3,
+ "tmp_table_records": 1,
+ "sj_inner_fanout": 27,
+ "rows": 3,
+ "dups_cost": 0.046364553,
+ "write_cost": 0.02548291,
+ "full_lookup_cost": 0.01303857,
+ "total_cost": 0.084886033
},
{
"chosen_strategy": "SJ-Materialization"
}
],
+ "rows_out": 0.333333333,
+ "rows_for_plan": 3,
"rest_of_plan": [
{
"plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"],
@@ -7548,23 +7677,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 11.69519043,
+ "rows_out": 9,
+ "cost": 0.017384389,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 11.69519043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.017384389,
"uses_join_buffering": true
}
},
"rows_for_plan": 27,
- "cost_for_plan": 30.82050781,
+ "cost_for_plan": 0.082415564,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -7583,23 +7712,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 30.10256348,
+ "rows_out": 3,
+ "cost": 0.034425181,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 30.10256348,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.034425181,
"uses_join_buffering": true
}
},
"rows_for_plan": 81,
- "cost_for_plan": 60.92307129,
+ "cost_for_plan": 0.116840745,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -7619,46 +7748,51 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 285.7451904,
+ "rows_out": 9,
+ "cost": 0.261522361,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 285.7451904,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.261522361,
"uses_join_buffering": true
}
},
"rows_for_plan": 729,
- "cost_for_plan": 346.6682617,
+ "cost_for_plan": 0.378363106,
"semijoin_strategy_choice": [
{
"strategy": "FirstMatch",
- "records": 27,
- "cost": 342.0126465
+ "rows": 27,
+ "cost": 1.289103614
},
{
"strategy": "SJ-Materialization",
- "records": 27,
- "cost": 55.39326172
+ "rows": 27,
+ "cost": 0.14166482
},
{
"strategy": "DuplicateWeedout",
- "records": 27,
- "dups_cost": 346.6682617,
- "write_cost": 5.05,
- "full_lookup_cost": 109.35,
- "total_cost": 461.0682617
+ "prefix_record_count": 27,
+ "tmp_table_records": 1,
+ "sj_inner_fanout": 27,
+ "rows": 27,
+ "dups_cost": 0.378363106,
+ "write_cost": 0.02934619,
+ "full_lookup_cost": 0.11734713,
+ "total_cost": 0.525056426
},
{
"chosen_strategy": "SJ-Materialization"
}
- ]
+ ],
+ "rows_out": 0.333333333,
+ "rows_for_plan": 27
}
]
},
@@ -7678,23 +7812,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 88.30769043,
+ "rows_out": 9,
+ "cost": 0.079988779,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 88.30769043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.079988779,
"uses_join_buffering": true
}
},
"rows_for_plan": 243,
- "cost_for_plan": 119.1281982,
+ "cost_for_plan": 0.162404343,
"semijoin_strategy_choice": [],
"pruned_by_cost": true
}
@@ -7711,23 +7845,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 4.565063477,
+ "rows_out": 3,
+ "cost": 0.012583195,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 4.565063477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.012583195,
"uses_join_buffering": true
}
},
"rows_for_plan": 9,
- "cost_for_plan": 23.69038086,
+ "cost_for_plan": 0.07761437,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -7746,23 +7880,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 31.60769043,
+ "rows_out": 9,
+ "cost": 0.034268023,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 31.60769043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.034268023,
"uses_join_buffering": true
}
},
"rows_for_plan": 81,
- "cost_for_plan": 55.29807129,
+ "cost_for_plan": 0.111882393,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -7782,36 +7916,41 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 285.7451904,
+ "rows_out": 9,
+ "cost": 0.261522361,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 285.7451904,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.261522361,
"uses_join_buffering": true
}
},
"rows_for_plan": 729,
- "cost_for_plan": 341.0432617,
+ "cost_for_plan": 0.373404754,
"semijoin_strategy_choice": [
{
"strategy": "DuplicateWeedout",
- "records": 27,
- "dups_cost": 341.0432617,
- "write_cost": 5.05,
- "full_lookup_cost": 109.35,
- "total_cost": 455.4432617
+ "prefix_record_count": 3,
+ "tmp_table_records": 9,
+ "sj_inner_fanout": 27,
+ "rows": 27,
+ "dups_cost": 0.373404754,
+ "write_cost": 0.02934619,
+ "full_lookup_cost": 0.11734713,
+ "total_cost": 0.520098074
},
{
"chosen_strategy": "DuplicateWeedout"
}
],
+ "rows_out": 0.333333333,
+ "rows_for_plan": 27,
"pruned_by_cost": true
}
]
@@ -7832,23 +7971,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 31.60769043,
+ "rows_out": 9,
+ "cost": 0.034268023,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 31.60769043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.034268023,
"uses_join_buffering": true
}
},
"rows_for_plan": 81,
- "cost_for_plan": 55.29807129,
+ "cost_for_plan": 0.111882393,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
}
@@ -7865,23 +8004,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 11.69519043,
+ "rows_out": 9,
+ "cost": 0.017384389,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 11.69519043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.017384389,
"uses_join_buffering": true
}
},
"rows_for_plan": 27,
- "cost_for_plan": 30.82050781,
+ "cost_for_plan": 0.082415564,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
}
@@ -7898,25 +8037,275 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 25.53269043,
+ "rows_out": 9,
+ "cost": 0.024407731,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 25.53269043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.024407731,
"uses_join_buffering": true
}
},
"rows_for_plan": 81,
- "cost_for_plan": 31.17531738,
+ "cost_for_plan": 0.046364553,
"semijoin_strategy_choice": [],
- "pruned_by_heuristic": true
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"],
+ "table": "t_inner_2",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 81
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 9,
+ "rows_after_filter": 9,
+ "rows_out": 9,
+ "cost": 0.172779733,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.172779733,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 729,
+ "cost_for_plan": 0.219144286,
+ "semijoin_strategy_choice": [
+ {
+ "strategy": "DuplicateWeedout",
+ "prefix_record_count": 3,
+ "tmp_table_records": 9,
+ "sj_inner_fanout": 27,
+ "rows": 27,
+ "dups_cost": 0.219144286,
+ "write_cost": 0.02934619,
+ "full_lookup_cost": 0.11734713,
+ "total_cost": 0.365837606
+ },
+ {
+ "chosen_strategy": "DuplicateWeedout"
+ }
+ ],
+ "rows_out": 0.333333333,
+ "rows_for_plan": 27,
+ "pruned_by_cost": true
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"],
+ "table": "t_inner_4",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 81
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 3,
+ "rows_after_filter": 3,
+ "rows_out": 3,
+ "cost": 0.067546675,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.067546675,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 243,
+ "cost_for_plan": 0.113911228,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_outer_2",
+ "t_inner_4"
+ ],
+ "table": "t_inner_2",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 243
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 9,
+ "rows_after_filter": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 2187,
+ "cost_for_plan": 0.742549079,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_outer_2",
+ "t_inner_4"
+ ],
+ "table": "t_inner_3",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 243
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 9,
+ "rows_after_filter": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 2187,
+ "cost_for_plan": 0.742549079,
+ "semijoin_strategy_choice": [
+ {
+ "strategy": "SJ-Materialization",
+ "rows": 81,
+ "cost": 0.116160225
+ },
+ {
+ "chosen_strategy": "SJ-Materialization"
+ }
+ ],
+ "rows_out": 0.333333333,
+ "rows_for_plan": 81,
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_outer_2",
+ "t_inner_4",
+ "t_inner_3"
+ ],
+ "table": "t_inner_2",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 81
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 9,
+ "rows_after_filter": 9,
+ "rows_out": 9,
+ "cost": 0.261522361,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.261522361,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 729,
+ "cost_for_plan": 0.377682586,
+ "semijoin_strategy_choice": [
+ {
+ "strategy": "DuplicateWeedout",
+ "prefix_record_count": 3,
+ "tmp_table_records": 9,
+ "sj_inner_fanout": 27,
+ "rows": 27,
+ "dups_cost": 1.00407144,
+ "write_cost": 0.02934619,
+ "full_lookup_cost": 0.11734713,
+ "total_cost": 1.15076476
+ },
+ {
+ "chosen_strategy": "DuplicateWeedout"
+ }
+ ],
+ "rows_out": 0.333333333,
+ "rows_for_plan": 27,
+ "pruned_by_cost": true
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"],
+ "table": "t_inner_3",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 81
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 9,
+ "rows_after_filter": 9,
+ "rows_out": 9,
+ "cost": 0.172779733,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.172779733,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 729,
+ "cost_for_plan": 0.219144286,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true
+ }
+ ]
},
{
"plan_prefix": ["t_outer_1", "t_inner_1"],
@@ -7929,23 +8318,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 9.177563477,
+ "rows_out": 3,
+ "cost": 0.015167773,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 9.177563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.015167773,
"uses_join_buffering": true
}
},
"rows_for_plan": 27,
- "cost_for_plan": 14.82019043,
+ "cost_for_plan": 0.037124595,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
@@ -7959,25 +8348,98 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 79.19519043,
+ "rows_out": 9,
+ "cost": 0.065198341,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 79.19519043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.065198341,
"uses_join_buffering": true
}
},
"rows_for_plan": 243,
- "cost_for_plan": 94.01538086,
+ "cost_for_plan": 0.102322936,
"semijoin_strategy_choice": [],
- "pruned_by_cost": true
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_4",
+ "t_inner_2"
+ ],
+ "table": "t_outer_2",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 243
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 9,
+ "rows_after_filter": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 2187,
+ "cost_for_plan": 0.730960787,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_4",
+ "t_inner_2"
+ ],
+ "table": "t_inner_3",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 243
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 9,
+ "rows_after_filter": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 2187,
+ "cost_for_plan": 0.730960787,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true
+ }
+ ]
},
{
"plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"],
@@ -7990,25 +8452,25 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 79.19519043,
+ "rows_out": 9,
+ "cost": 0.065198341,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 79.19519043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.065198341,
"uses_join_buffering": true
}
},
"rows_for_plan": 243,
- "cost_for_plan": 94.01538086,
+ "cost_for_plan": 0.102322936,
"semijoin_strategy_choice": [],
- "pruned_by_cost": true
+ "pruned_by_heuristic": true
},
{
"plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"],
@@ -8021,25 +8483,25 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 79.19519043,
+ "rows_out": 9,
+ "cost": 0.065198341,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 79.19519043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.065198341,
"uses_join_buffering": true
}
},
"rows_for_plan": 243,
- "cost_for_plan": 94.01538086,
+ "cost_for_plan": 0.102322936,
"semijoin_strategy_choice": [],
- "pruned_by_cost": true
+ "pruned_by_heuristic": true
}
]
},
@@ -8054,25 +8516,203 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 25.53269043,
+ "rows_out": 9,
+ "cost": 0.024407731,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 25.53269043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.024407731,
"uses_join_buffering": true
}
},
"rows_for_plan": 81,
- "cost_for_plan": 31.17531738,
+ "cost_for_plan": 0.046364553,
"semijoin_strategy_choice": [],
- "pruned_by_heuristic": true
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_3"],
+ "table": "t_inner_2",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 81
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 9,
+ "rows_after_filter": 9,
+ "rows_out": 9,
+ "cost": 0.172779733,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.172779733,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 729,
+ "cost_for_plan": 0.219144286,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_3"],
+ "table": "t_outer_2",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 81
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 9,
+ "rows_after_filter": 9,
+ "rows_out": 9,
+ "cost": 0.172779733,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.172779733,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 729,
+ "cost_for_plan": 0.219144286,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_3"],
+ "table": "t_inner_4",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 81
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 3,
+ "rows_after_filter": 3,
+ "rows_out": 3,
+ "cost": 0.067546675,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.067546675,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 243,
+ "cost_for_plan": 0.113911228,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_3",
+ "t_inner_4"
+ ],
+ "table": "t_inner_2",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 243
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 9,
+ "rows_after_filter": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 2187,
+ "cost_for_plan": 0.742549079,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_3",
+ "t_inner_4"
+ ],
+ "table": "t_outer_2",
+ "best_access_path": {
+ "plan_details": {
+ "record_count": 243
+ },
+ "considered_access_paths": [
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 9,
+ "rows_after_filter": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.628637851,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 2187,
+ "cost_for_plan": 0.742549079,
+ "semijoin_strategy_choice": [
+ {
+ "strategy": "SJ-Materialization-Scan",
+ "rows": 729,
+ "cost": 0.388014063
+ },
+ {
+ "chosen_strategy": "SJ-Materialization-Scan"
+ }
+ ],
+ "rows_out": 3,
+ "rows_for_plan": 729,
+ "pruned_by_cost": true
+ }
+ ]
+ }
+ ]
}
]
},
@@ -8087,23 +8727,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 9.67019043,
+ "rows_out": 9,
+ "cost": 0.014097625,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 9.67019043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.014097625,
"uses_join_buffering": true
}
},
"rows_for_plan": 27,
- "cost_for_plan": 11.42275391,
+ "cost_for_plan": 0.02456684,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -8118,23 +8758,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 9.67019043,
+ "rows_out": 9,
+ "cost": 0.014097625,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 9.67019043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.014097625,
"uses_join_buffering": true
}
},
"rows_for_plan": 27,
- "cost_for_plan": 11.42275391,
+ "cost_for_plan": 0.02456684,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -8149,23 +8789,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 3.890063477,
+ "rows_out": 3,
+ "cost": 0.011487607,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 3.890063477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.011487607,
"uses_join_buffering": true
}
},
"rows_for_plan": 9,
- "cost_for_plan": 5.642626953,
+ "cost_for_plan": 0.021956822,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -8180,23 +8820,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan_with_join_cache",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 9.67019043,
+ "rows_out": 9,
+ "cost": 0.014097625,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 9.67019043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.014097625,
"uses_join_buffering": true
}
},
"rows_for_plan": 27,
- "cost_for_plan": 11.42275391,
+ "cost_for_plan": 0.02456684,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
}
@@ -8213,23 +8853,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.752563477,
+ "rows_out": 3,
+ "cost": 0.010469215,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.752563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.010469215,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.752563477,
+ "cost_for_plan": 0.010469215,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -8244,23 +8884,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 3.25769043,
+ "rows_out": 9,
+ "cost": 0.011407645,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 3.25769043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.011407645,
"uses_join_buffering": false
}
},
"rows_for_plan": 9,
- "cost_for_plan": 3.25769043,
+ "cost_for_plan": 0.011407645,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -8275,23 +8915,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 3.25769043,
+ "rows_out": 9,
+ "cost": 0.011407645,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 3.25769043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.011407645,
"uses_join_buffering": false
}
},
"rows_for_plan": 9,
- "cost_for_plan": 3.25769043,
+ "cost_for_plan": 0.011407645,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -8306,23 +8946,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.752563477,
+ "rows_out": 3,
+ "cost": 0.010469215,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.752563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.010469215,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.752563477,
+ "cost_for_plan": 0.010469215,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
@@ -8337,23 +8977,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"access_type": "scan",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 9,
- "cost": 3.25769043,
+ "rows_out": 9,
+ "cost": 0.011407645,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 9,
- "records_out": 9,
- "cost": 3.25769043,
+ "rows_read": 9,
+ "rows_out": 9,
+ "cost": 0.011407645,
"uses_join_buffering": false
}
},
"rows_for_plan": 9,
- "cost_for_plan": 3.25769043,
+ "cost_for_plan": 0.011407645,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
}
@@ -8393,7 +9033,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"<subquery3>"
],
"rows": 27,
- "cost": 55.39326172
+ "cost": 0.14166482
},
{
"substitute_best_equal": {
@@ -8501,7 +9141,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
"using_mrr": false,
"index_only": true,
"rows": 1,
- "cost": 0.745829876,
+ "cost": 0.001388369,
"chosen": true
}
],
@@ -8535,7 +9175,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
"using_mrr": false,
"index_only": true,
"rows": 107,
- "cost": 24.68379668,
+ "cost": 0.016044989,
"chosen": true
}
],
@@ -8572,7 +9212,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
"using_mrr": false,
"index_only": false,
"rows": 1000,
- "cost": 756.2522431,
+ "cost": 1.235599899,
"chosen": true
}
],
@@ -8617,7 +9257,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
"using_mrr": false,
"index_only": false,
"rows": 4,
- "cost": 3.523710032,
+ "cost": 0.006185575,
"chosen": true
}
],
@@ -8656,7 +9296,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
"using_mrr": false,
"index_only": false,
"rows": 1,
- "cost": 1.271171589,
+ "cost": 0.002483968,
"chosen": true
}
],
@@ -8690,7 +9330,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
"using_mrr": false,
"index_only": false,
"rows": 1,
- "cost": 1.271171589,
+ "cost": 0.002483968,
"chosen": true
}
],
@@ -8732,7 +9372,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
"using_mrr": false,
"index_only": false,
"rows": 1,
- "cost": 1.270927508,
+ "cost": 0.002483968,
"chosen": true
}
],
@@ -8767,7 +9407,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
"using_mrr": false,
"index_only": false,
"rows": 1,
- "cost": 1.270878692,
+ "cost": 0.002483968,
"chosen": true
}
],
@@ -8802,7 +9442,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
"using_mrr": false,
"index_only": false,
"rows": 1,
- "cost": 1.270927508,
+ "cost": 0.002483968,
"chosen": true
}
],
@@ -8840,7 +9480,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
"using_mrr": false,
"index_only": false,
"rows": 1,
- "cost": 1.270878692,
+ "cost": 0.002483968,
"chosen": true
}
],
@@ -8881,7 +9521,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
"using_mrr": false,
"index_only": false,
"rows": 1,
- "cost": 1.319255553,
+ "cost": 0.002483968,
"chosen": true
}
],
@@ -8901,7 +9541,7 @@ INSERT INTO t1 VALUES (2, 'ab\n');
set optimizer_trace=1;
EXPLAIN SELECT * FROM t1 WHERE b='ab\n';
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 ALL i_b NULL NULL NULL 2 Using where
+1 SIMPLE t1 ref i_b i_b 13 const 2 Using index condition
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
[
@@ -8920,9 +9560,8 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
"using_mrr": false,
"index_only": false,
"rows": 2,
- "cost": 2.021855016,
- "chosen": false,
- "cause": "cost"
+ "cost": 0.003717837,
+ "chosen": true
}
],
"analyzing_roworder_intersect":
@@ -8977,7 +9616,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
"using_mrr": false,
"index_only": false,
"rows": 1000,
- "cost": 756.2522431,
+ "cost": 1.235599899,
"chosen": true
}
],
@@ -9046,9 +9685,9 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
{
"access_type": "scan",
"rows": 10,
- "rows_after_scan": 5.9375,
"rows_after_filter": 5.9375,
- "cost": 3.508544922,
+ "rows_out": 5.9375,
+ "cost": 0.01156405,
"index_only": false,
"chosen": true
}
@@ -9056,14 +9695,14 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"chosen_access_method":
{
"type": "scan",
- "records_read": 5.9375,
- "records_out": 5.9375,
- "cost": 3.508544922,
+ "rows_read": 5.9375,
+ "rows_out": 5.9375,
+ "cost": 0.01156405,
"uses_join_buffering": false
}
},
"rows_for_plan": 5.9375,
- "cost_for_plan": 3.508544922,
+ "cost_for_plan": 0.01156405,
"rest_of_plan":
[
@@ -9085,9 +9724,9 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
{
"access_type": "scan",
"rows": 1000,
- "rows_after_scan": 804.6875,
"rows_after_filter": 804.6875,
- "cost": 1496.835632,
+ "rows_out": 804.6875,
+ "cost": 0.990884438,
"index_only": false,
"chosen": true
}
@@ -9095,14 +9734,14 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"chosen_access_method":
{
"type": "scan",
- "records_read": 804.6875,
- "records_out": 804.6875,
- "cost": 1496.835632,
+ "rows_read": 804.6875,
+ "rows_out": 804.6875,
+ "cost": 0.990884438,
"uses_join_buffering": false
}
},
"rows_for_plan": 4777.832031,
- "cost_for_plan": 1500.344177
+ "cost_for_plan": 1.002448488
}
]
},
@@ -9124,9 +9763,9 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
{
"access_type": "scan",
"rows": 1000,
- "rows_after_scan": 804.6875,
"rows_after_filter": 804.6875,
- "cost": 252.0986328,
+ "rows_out": 804.6875,
+ "cost": 0.1668858,
"index_only": false,
"chosen": true
}
@@ -9134,14 +9773,14 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"chosen_access_method":
{
"type": "scan",
- "records_read": 804.6875,
- "records_out": 804.6875,
- "cost": 252.0986328,
+ "rows_read": 804.6875,
+ "rows_out": 804.6875,
+ "cost": 0.1668858,
"uses_join_buffering": false
}
},
"rows_for_plan": 804.6875,
- "cost_for_plan": 252.0986328,
+ "cost_for_plan": 0.1668858,
"pruned_by_heuristic": true
}
]
@@ -9175,9 +9814,9 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
{
"access_type": "scan",
"rows": 10,
- "rows_after_scan": 10,
"rows_after_filter": 10,
- "cost": 3.508544922,
+ "rows_out": 10,
+ "cost": 0.01156405,
"index_only": false,
"chosen": true
}
@@ -9185,14 +9824,14 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"chosen_access_method":
{
"type": "scan",
- "records_read": 10,
- "records_out": 10,
- "cost": 3.508544922,
+ "rows_read": 10,
+ "rows_out": 10,
+ "cost": 0.01156405,
"uses_join_buffering": false
}
},
"rows_for_plan": 10,
- "cost_for_plan": 3.508544922,
+ "cost_for_plan": 0.01156405,
"rest_of_plan":
[
@@ -9217,31 +9856,27 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"used_range_estimates": false,
"cause": "not available",
"rows": 1,
- "cost": 12.50585794,
+ "cost": 0.01810946,
"chosen": true
},
{
- "access_type": "scan_with_join_cache",
- "rows": 1000,
- "rows_after_scan": 603.515625,
- "rows_after_filter": 603.515625,
- "cost": 1685.448242,
- "index_only": false,
- "chosen": false
+ "type": "scan",
+ "chosen": false,
+ "cause": "cost"
}
],
"chosen_access_method":
{
"type": "ref",
- "records_read": 1,
- "records_out": 1,
- "cost": 12.50585794,
+ "rows_read": 1,
+ "rows_out": 1,
+ "cost": 0.01810946,
"uses_join_buffering": false
}
},
"rows_for_plan": 10,
- "cost_for_plan": 16.01440287,
+ "cost_for_plan": 0.02967351,
"selectivity": 0.8046875,
"estimated_join_cardinality": 8.046875
}
@@ -9265,9 +9900,9 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
{
"access_type": "scan",
"rows": 1000,
- "rows_after_scan": 804.6875,
"rows_after_filter": 804.6875,
- "cost": 252.0986328,
+ "rows_out": 804.6875,
+ "cost": 0.1668858,
"index_only": false,
"chosen": true
}
@@ -9275,14 +9910,14 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"chosen_access_method":
{
"type": "scan",
- "records_read": 804.6875,
- "records_out": 804.6875,
- "cost": 252.0986328,
+ "rows_read": 804.6875,
+ "rows_out": 804.6875,
+ "cost": 0.1668858,
"uses_join_buffering": false
}
},
"rows_for_plan": 804.6875,
- "cost_for_plan": 252.0986328,
+ "cost_for_plan": 0.1668858,
"pruned_by_cost": true
}
]
@@ -9316,7 +9951,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives'))
"using_mrr": false,
"index_only": false,
"rows": 1,
- "cost": 1.282887479,
+ "cost": 0.002483968,
"chosen": true
}
],
@@ -9342,9 +9977,9 @@ insert into t3 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
explain
select * from t3 where (a,a) in (select t1.a, t2.a from t1, t2 where t1.b=t2.b);
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY t1 ALL PRIMARY NULL NULL NULL 5
-1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 test.t1.a 1 Using where
-1 PRIMARY t3 ALL NULL NULL NULL NULL 10 Using where; Using join buffer (flat, BNL join)
+1 PRIMARY t3 ALL NULL NULL NULL NULL 10 Using where
+1 PRIMARY t1 ALL PRIMARY NULL NULL NULL 5 Using where; Using join buffer (flat, BNL join)
+1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 test.t3.a 1 Using where
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.semijoin_table_pullout')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
JSON_DETAILED(JSON_EXTRACT(trace, '$**.semijoin_table_pullout'))
[
@@ -9382,7 +10017,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.range_scan_alternatives'))
"using_mrr": false,
"index_only": true,
"rows": 1,
- "cost": 0.745829876,
+ "cost": 0.001388369,
"chosen": true
}
]
@@ -9423,9 +10058,9 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
{
"access_type": "scan",
"rows": 10,
- "rows_after_scan": 10,
"rows_after_filter": 10,
- "cost": 3.510986328,
+ "rows_out": 10,
+ "cost": 0.01156405,
"index_only": false,
"chosen": true
}
@@ -9433,14 +10068,14 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"chosen_access_method":
{
"type": "scan",
- "records_read": 10,
- "records_out": 10,
- "cost": 3.510986328,
+ "rows_read": 10,
+ "rows_out": 10,
+ "cost": 0.01156405,
"uses_join_buffering": false
}
},
"rows_for_plan": 10,
- "cost_for_plan": 3.510986328,
+ "cost_for_plan": 0.01156405,
"rest_of_plan":
[
@@ -9465,33 +10100,28 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"used_range_estimates": false,
"cause": "not available",
"rows": 1,
- "cost": 12.50585794,
+ "cost": 0.01749506,
"chosen": true
},
{
- "access_type": "scan_with_join_cache",
- "rows": 100,
- "rows_after_scan": 75,
- "rows_after_filter": 75,
- "cost": 204.2348633,
- "index_only": false,
- "chosen": false
+ "type": "scan",
+ "chosen": false,
+ "cause": "cost"
}
],
"chosen_access_method":
{
"type": "ref",
- "records_read": 1,
- "records_out": 1,
- "cost": 12.50585794,
+ "rows_read": 1,
+ "rows_out": 1,
+ "cost": 0.01749506,
"uses_join_buffering": false
}
},
"rows_for_plan": 10,
- "cost_for_plan": 16.01684427,
- "cost_for_sorting": 10,
- "pruned_by_hanging_leaf": true
+ "cost_for_plan": 0.02905911,
+ "cost_for_sorting": 0.006368384
}
]
},
@@ -9513,9 +10143,9 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
{
"access_type": "scan",
"rows": 100,
- "rows_after_scan": 100,
"rows_after_filter": 100,
- "cost": 26.10986328,
+ "rows_out": 100,
+ "cost": 0.0256405,
"index_only": false,
"chosen": true,
"use_tmp_table": true
@@ -9524,15 +10154,66 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"chosen_access_method":
{
"type": "scan",
- "records_read": 100,
- "records_out": 100,
- "cost": 26.10986328,
+ "rows_read": 100,
+ "rows_out": 100,
+ "cost": 0.0256405,
"uses_join_buffering": false
}
},
"rows_for_plan": 100,
- "cost_for_plan": 26.10986328,
- "pruned_by_cost": true
+ "cost_for_plan": 0.0256405,
+ "rest_of_plan":
+ [
+
+ {
+ "plan_prefix":
+ [
+ "t2"
+ ],
+ "table": "t1",
+ "best_access_path":
+ {
+ "plan_details":
+ {
+ "record_count": 100
+ },
+ "considered_access_paths":
+ [
+
+ {
+ "access_type": "ref",
+ "index": "a",
+ "used_range_estimates": false,
+ "cause": "not available",
+ "rows": 1,
+ "cost": 0.1731074,
+ "chosen": true
+ },
+
+ {
+ "access_type": "scan_with_join_cache",
+ "rows": 10,
+ "rows_after_filter": 10,
+ "rows_out": 1,
+ "cost": 0.11051665,
+ "index_only": false,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method":
+ {
+ "type": "scan",
+ "rows_read": 10,
+ "rows_out": 1,
+ "cost": 0.11051665,
+ "uses_join_buffering": true
+ }
+ },
+ "rows_for_plan": 100,
+ "cost_for_plan": 0.13615715,
+ "pruned_by_cost": true
+ }
+ ]
}
]
]
@@ -9550,7 +10231,7 @@ test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
EXPLAIN EXTENDED SELECT * from t1 WHERE a between 1 and 5 and b <= 5;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 ALL NULL NULL NULL NULL 100 1.00 Using where
+1 SIMPLE t1 ALL NULL NULL NULL NULL 100 0.22 Using where
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`a` between 1 and 5 and `test`.`t1`.`b` <= 5
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.selectivity_for_columns')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
@@ -9647,7 +10328,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.range_scan_alternatives'))
"using_mrr": false,
"index_only": false,
"rows": 0,
- "cost": 0.52,
+ "cost": 0.001340684,
"chosen": true
}
]
@@ -9749,8 +10430,8 @@ select count(*) from seq_1_to_10000000 {
"table": "seq_1_to_10000000",
"table_scan": {
"rows": 10000000,
- "read_cost": 5000000,
- "read_and_compare_cost": 7250000
+ "read_cost": 124.7880673,
+ "read_and_compare_cost": 444.7880673
}
}
]
@@ -9768,30 +10449,30 @@ select count(*) from seq_1_to_10000000 {
{
"access_type": "scan",
"rows": 10000000,
- "rows_after_scan": 10000000,
"rows_after_filter": 10000000,
- "cost": 7250000,
+ "rows_out": 10000000,
+ "cost": 444.7880673,
"index_only": true,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 10000000,
- "records_out": 10000000,
- "cost": 7250000,
+ "rows_read": 10000000,
+ "rows_out": 10000000,
+ "cost": 444.7880673,
"uses_join_buffering": false
}
},
"rows_for_plan": 10000000,
- "cost_for_plan": 7250000
+ "cost_for_plan": 444.7880673
}
]
},
{
"best_join_order": ["seq_1_to_10000000"],
"rows": 10000000,
- "cost": 7250000
+ "cost": 444.7880673
},
{
"attaching_conditions_to_tables": {
@@ -9830,7 +10511,7 @@ explain
select * from t1 left join (t2 join t3 on t3.pk=1000) on t2.a=t1.a and t2.pk is null;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t3 const PRIMARY NULL NULL NULL 1 Impossible ON condition
-1 SIMPLE t2 const PRIMARY NULL NULL NULL 1 Impossible ON condition
+1 SIMPLE t2 const PRIMARY NULL NULL NULL 0 Impossible ON condition
1 SIMPLE t1 ALL NULL NULL NULL NULL 10
select JSON_DETAILED(JSON_EXTRACT(trace, '$**.mark_join_nest_as_const'))
from information_schema.optimizer_trace;
@@ -10183,7 +10864,7 @@ json_detailed(json_extract(trace, '$**.choose_best_splitting'))
"used_range_estimates": false,
"cause": "not available",
"rows": 1.8367,
- "cost": 1.417925794,
+ "cost": 0.0019606,
"chosen": true
},
@@ -10196,27 +10877,33 @@ json_detailed(json_extract(trace, '$**.choose_best_splitting'))
"chosen_access_method":
{
"type": "ref",
- "records_read": 1.8367,
- "records_out": 1.8367,
- "cost": 1.417925794,
+ "rows_read": 1.8367,
+ "rows_out": 1.8367,
+ "cost": 0.0019606,
"uses_join_buffering": false
}
},
"rows_for_plan": 1.8367,
- "cost_for_plan": 1.417925794,
- "cost_for_sorting": 1.8367
+ "cost_for_plan": 0.0019606,
+ "cost_for_sorting": 0.001155201
}
]
},
{
- "best_splitting":
+ "split_materialized":
{
"table": "t2",
"key": "idx_a",
- "record_count": 4,
- "cost": 4.157170953,
- "unsplit_cost": 60.1794762
+ "org_cost": 0.0019606,
+ "postjoin_cost": 0.001135418,
+ "one_splitting_cost": 0.003096018,
+ "unsplit_postjoin_cost": 0.036032575,
+ "unsplit_cost": 0.060589825,
+ "rows": 1.8367,
+ "outer_rows": 4,
+ "total_splitting_cost": 0.012384072,
+ "chosen": true
}
}
]
@@ -10226,14 +10913,7 @@ json_detailed(json_extract(trace, '$**.lateral_derived'))
from
information_schema.optimizer_trace;
json_detailed(json_extract(trace, '$**.lateral_derived'))
-[
-
- {
- "startup_cost": 16.62868381,
- "splitting_cost": 4.157170953,
- "records": 1
- }
-]
+NULL
drop table t1,t2;
#
# Test table functions.
@@ -10290,7 +10970,6 @@ set @save_histogram_size= @@histogram_size;
set @save_optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity;
set optimizer_switch='rowid_filter=on';
set use_stat_tables='preferably';
-set optimizer_use_condition_selectivity=4;
set histogram_size=127;
create table t1 (a int, b int, c int, key(a),key(b));
insert into t1 select seq, seq*2, seq/10 from seq_1_to_1000;
@@ -10358,7 +11037,7 @@ explain select * from t1 where a<10 and b between 10 and 50 and c < 10 {
"range_analysis": {
"table_scan": {
"rows": 1000,
- "cost": 252.5869141
+ "cost": 0.1671262
},
"potential_range_indexes": [
{
@@ -10382,7 +11061,7 @@ explain select * from t1 where a<10 and b between 10 and 50 and c < 10 {
"using_mrr": false,
"index_only": false,
"rows": 9,
- "cost": 7.27527215,
+ "cost": 0.01235492,
"chosen": true
},
{
@@ -10392,7 +11071,7 @@ explain select * from t1 where a<10 and b between 10 and 50 and c < 10 {
"using_mrr": false,
"index_only": false,
"rows": 21,
- "cost": 16.28230168,
+ "cost": 0.027161348,
"chosen": false,
"cause": "cost"
}
@@ -10414,7 +11093,7 @@ explain select * from t1 where a<10 and b between 10 and 50 and c < 10 {
"ranges": ["(NULL) < (a) < (10)"]
},
"rows_for_plan": 9,
- "cost_for_plan": 7.27527215,
+ "cost_for_plan": 0.01235492,
"chosen": true
}
}
@@ -10424,12 +11103,12 @@ explain select * from t1 where a<10 and b between 10 and 50 and c < 10 {
"rowid_filters": [
{
"key": "a",
- "build_cost": 0.759047172,
+ "build_cost": 0.001839302,
"rows": 9
},
{
"key": "b",
- "build_cost": 1.122236655,
+ "build_cost": 0.003459502,
"rows": 21
}
]
@@ -10469,51 +11148,49 @@ explain select * from t1 where a<10 and b between 10 and 50 and c < 10 {
{
"filter": {
"rowid_filter_key": "b",
- "index_only_cost": 0.50527215,
- "filter_startup_cost": 1.122236655,
- "find_key_and_filter_lookup_cost": 0.386507019,
+ "index_only_cost": 0.001515222,
+ "filter_startup_cost": 0.003459502,
+ "find_key_and_filter_lookup_cost": 7.275007e-4,
"filter_selectivity": 0.021,
"orginal_rows": 9,
"new_rows": 0.189,
- "original_found_rows_cost": 5.45527215,
- "new_found_rows_cost": 1.381168455,
- "cost": 2.54120511,
+ "orginal_access_cost": 0.011516778,
+ "with_filter_access_cost": 0.002452755,
+ "original_found_rows_cost": 0.010001556,
+ "with_filter_found_rows_cost": 2.100327e-4,
+ "cost": 0.005918305,
"filter_used": true
},
"access_type": "range",
"rows": 9,
- "rows_after_scan": 9,
"rows_after_filter": 0.189,
- "cost": 2.54120511,
+ "rows_out": 0.020671875,
+ "cost": 0.005918305,
"chosen": true
}
],
"chosen_access_method": {
"type": "range",
- "records_read": 9,
- "records_out": 0.020671875,
- "cost": 2.54120511,
+ "rows_read": 0.189,
+ "rows_out": 0.020671875,
+ "cost": 0.005918305,
"uses_join_buffering": false,
"rowid_filter_key": "b"
}
},
- "rows_for_plan": 9,
- "cost_for_plan": 2.54120511
+ "rows_for_plan": 0.020671875,
+ "cost_for_plan": 0.005918305
}
]
},
{
"best_join_order": ["t1"],
- "rows": 9,
- "cost": 2.54120511
+ "rows": 0.020671875,
+ "cost": 0.005918305
},
{
"table": "t1",
"range_analysis": {
- "table_scan": {
- "rows": 1000,
- "cost": 1.79769e308
- },
"potential_range_indexes": [
{
"index": "a",
@@ -10536,7 +11213,7 @@ explain select * from t1 where a<10 and b between 10 and 50 and c < 10 {
"using_mrr": false,
"index_only": true,
"rows": 21,
- "cost": 5.257301684,
+ "cost": 0.004153769,
"chosen": true
}
]
@@ -10549,7 +11226,7 @@ explain select * from t1 where a<10 and b between 10 and 50 and c < 10 {
"ranges": ["(10) <= (b) <= (50)"]
},
"rows_for_plan": 21,
- "cost_for_plan": 5.257301684,
+ "cost_for_plan": 0.004153769,
"chosen": true
}
}
@@ -10591,6 +11268,7 @@ analyze table t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
+set optimizer_use_condition_selectivity=2;
explain format=json select * from three, t1 where t1.a=three.a and t1.b<5000 and t1.c<1000;
EXPLAIN
{
@@ -10600,28 +11278,49 @@ EXPLAIN
"table_name": "three",
"access_type": "ALL",
"rows": 3,
- "filtered": 100,
- "attached_condition": "three.a is not null"
+ "filtered": 100
},
+ "block-nl-join": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "possible_keys": ["a", "b"],
+ "rows": 10000,
+ "filtered": 4.311999798,
+ "attached_condition": "t1.b < 5000 and t1.c < 1000"
+ },
+ "buffer_type": "flat",
+ "buffer_size": "65",
+ "join_type": "BNL",
+ "attached_condition": "t1.a = three.a"
+ }
+ }
+}
+set optimizer_use_condition_selectivity=4;
+explain format=json select * from three, t1 where t1.a=three.a and t1.b<5000 and t1.c<1000;
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
"table": {
- "table_name": "t1",
- "access_type": "ref",
- "possible_keys": ["a", "b"],
- "key": "a",
- "key_length": "5",
- "used_key_parts": ["a"],
- "ref": ["test.three.a"],
- "rowid_filter": {
- "range": {
- "key": "b",
- "used_key_parts": ["b"]
- },
- "rows": 4312,
- "selectivity_pct": 43.12
+ "table_name": "three",
+ "access_type": "ALL",
+ "rows": 3,
+ "filtered": 100
+ },
+ "block-nl-join": {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "possible_keys": ["a", "b"],
+ "rows": 10000,
+ "filtered": 4.311999798,
+ "attached_condition": "t1.b < 5000 and t1.c < 1000"
},
- "rows": 1000,
- "filtered": 4.716249943,
- "attached_condition": "t1.b < 5000 and t1.c < 1000"
+ "buffer_type": "flat",
+ "buffer_size": "65",
+ "join_type": "BNL",
+ "attached_condition": "t1.a = three.a"
}
}
}
@@ -10694,8 +11393,8 @@ explain format=json select * from three, t1 where t1.a=three.a and t1.b<5000 and
"table": "three",
"table_scan": {
"rows": 3,
- "read_cost": 1.002563477,
- "read_and_compare_cost": 1.752563477
+ "read_cost": 0.010373215,
+ "read_and_compare_cost": 0.010469215
}
},
{
@@ -10703,7 +11402,7 @@ explain format=json select * from three, t1 where t1.a=three.a and t1.b<5000 and
"range_analysis": {
"table_scan": {
"rows": 10000,
- "cost": 2516.869141
+ "cost": 1.5815024
},
"potential_range_indexes": [
{
@@ -10727,7 +11426,7 @@ explain format=json select * from three, t1 where t1.a=three.a and t1.b<5000 and
"using_mrr": false,
"index_only": false,
"rows": 4312,
- "cost": 3260.045946,
+ "cost": 5.325058827,
"chosen": false,
"cause": "cost"
}
@@ -10748,7 +11447,7 @@ explain format=json select * from three, t1 where t1.a=three.a and t1.b<5000 and
"rowid_filters": [
{
"key": "b",
- "build_cost": 174.2257513,
+ "build_cost": 0.701115436,
"rows": 4312
}
]
@@ -10784,23 +11483,23 @@ explain format=json select * from three, t1 where t1.a=three.a and t1.b<5000 and
{
"access_type": "scan",
"rows": 3,
- "rows_after_scan": 3,
"rows_after_filter": 3,
- "cost": 1.752563477,
+ "rows_out": 3,
+ "cost": 0.010469215,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 3,
- "records_out": 3,
- "cost": 1.752563477,
+ "rows_read": 3,
+ "rows_out": 3,
+ "cost": 0.010469215,
"uses_join_buffering": false
}
},
"rows_for_plan": 3,
- "cost_for_plan": 1.752563477,
+ "cost_for_plan": 0.010469215,
"rest_of_plan": [
{
"plan_prefix": ["three"],
@@ -10817,44 +11516,43 @@ explain format=json select * from three, t1 where t1.a=three.a and t1.b<5000 and
"cause": "not available",
"filter": {
"rowid_filter_key": "b",
- "index_only_cost": 2.585794484,
- "filter_startup_cost": 174.2257513,
- "find_key_and_filter_lookup_cost": 96.19157113,
+ "index_only_cost": 0.092006157,
+ "filter_startup_cost": 0.701115436,
+ "find_key_and_filter_lookup_cost": 0.111079997,
"filter_selectivity": 0.4312,
"orginal_rows": 1000,
"new_rows": 431.2,
- "original_found_rows_cost": 552.5857945,
- "new_found_rows_cost": 335.9373656,
- "cost": 1440.757848,
+ "orginal_access_cost": 1.203290157,
+ "with_filter_access_cost": 0.682271815,
+ "original_found_rows_cost": 1.111284,
+ "with_filter_found_rows_cost": 0.479185661,
+ "cost": 2.78932608,
"filter_used": true
},
"rows": 431.2,
- "cost": 1440.757848,
+ "cost": 2.78932608,
"chosen": true
},
{
"access_type": "scan_with_join_cache",
"rows": 10000,
- "rows_after_scan": 353.71875,
- "rows_after_filter": 353.71875,
- "cost": 2768.89375,
+ "rows_after_filter": 471.625,
+ "rows_out": 431.2,
+ "cost": 1.71307878,
"index_only": false,
- "chosen": false
+ "chosen": true
}
],
"chosen_access_method": {
- "type": "ref",
- "records_read": 1000,
- "records_out": 353.71875,
- "cost": 1440.757848,
- "uses_join_buffering": false,
- "rowid_filter_key": "b"
+ "type": "scan",
+ "rows_read": 471.625,
+ "rows_out": 431.2,
+ "cost": 1.71307878,
+ "uses_join_buffering": true
}
},
- "rows_for_plan": 3000,
- "cost_for_plan": 1442.510412,
- "selectivity": 0.0471625,
- "estimated_join_cardinality": 141.4875
+ "rows_for_plan": 1293.6,
+ "cost_for_plan": 1.723547995
}
]
},
@@ -10869,78 +11567,31 @@ explain format=json select * from three, t1 where t1.a=three.a and t1.b<5000 and
{
"access_type": "scan",
"rows": 10000,
- "rows_after_scan": 471.625,
"rows_after_filter": 471.625,
- "cost": 2516.869141,
+ "rows_out": 471.625,
+ "cost": 1.5815024,
"index_only": false,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records_read": 471.625,
- "records_out": 471.625,
- "cost": 2516.869141,
+ "rows_read": 471.625,
+ "rows_out": 471.625,
+ "cost": 1.5815024,
"uses_join_buffering": false
}
},
"rows_for_plan": 471.625,
- "cost_for_plan": 2516.869141,
- "pruned_by_cost": true
+ "cost_for_plan": 1.5815024,
+ "pruned_by_heuristic": true
}
]
},
{
"best_join_order": ["three", "t1"],
- "rows": 141.4875,
- "cost": 1442.510412
- },
- {
- "table": "t1",
- "range_analysis": {
- "table_scan": {
- "rows": 10000,
- "cost": 1.79769e308
- },
- "potential_range_indexes": [
- {
- "index": "a",
- "usable": false,
- "cause": "not applicable"
- },
- {
- "index": "b",
- "usable": true,
- "key_parts": ["b"]
- }
- ],
- "setup_range_conditions": [],
- "analyzing_range_alternatives": {
- "range_scan_alternatives": [
- {
- "index": "b",
- "ranges": ["(NULL) < (b) < (5000)"],
- "rowid_ordered": false,
- "using_mrr": false,
- "index_only": true,
- "rows": 4312,
- "cost": 996.2459458,
- "chosen": true
- }
- ]
- },
- "chosen_range_access_summary": {
- "range_access_plan": {
- "type": "range_scan",
- "index": "b",
- "rows": 4312,
- "ranges": ["(NULL) < (b) < (5000)"]
- },
- "rows_for_plan": 4312,
- "cost_for_plan": 996.2459458,
- "chosen": true
- }
- }
+ "rows": 1293.6,
+ "cost": 1.723547995
},
{
"substitute_best_equal": {
@@ -10950,15 +11601,64 @@ explain format=json select * from three, t1 where t1.a=three.a and t1.b<5000 and
},
{
"attaching_conditions_to_tables": {
- "attached_conditions_computation": [],
+ "attached_conditions_computation": [
+ {
+ "table": "t1",
+ "range_analysis": {
+ "table_scan": {
+ "rows": 10000,
+ "cost": 1.5815024
+ },
+ "potential_range_indexes": [
+ {
+ "index": "a",
+ "usable": true,
+ "key_parts": ["a"]
+ },
+ {
+ "index": "b",
+ "usable": true,
+ "key_parts": ["b"]
+ }
+ ],
+ "setup_range_conditions": [],
+ "analyzing_range_alternatives": {
+ "range_scan_alternatives": [
+ {
+ "index": "a"
+ },
+ {
+ "index": "b",
+ "ranges": ["(NULL) < (b) < (5000)"],
+ "rowid_ordered": false,
+ "using_mrr": false,
+ "index_only": false,
+ "rows": 4312,
+ "cost": 5.325058827,
+ "chosen": false,
+ "cause": "cost"
+ }
+ ],
+ "analyzing_roworder_intersect": {
+ "cause": "too few roworder scans"
+ },
+ "analyzing_index_merge_union": []
+ },
+ "group_index_range": {
+ "chosen": false,
+ "cause": "not single_table"
+ }
+ }
+ }
+ ],
"attached_conditions_summary": [
{
"table": "three",
- "attached": "three.a is not null"
+ "attached": null
},
{
"table": "t1",
- "attached": "t1.b < 5000 and t1.c < 1000"
+ "attached": "t1.a = three.a and t1.b < 5000 and t1.c < 1000"
}
]
}