use mydb;
drop table if exists t1;
create table t1
(id int auto_increment primary key,
firstname varchar(100) not null default '',
lastname varchar(100) not null default '',
index fn_ln_index(firstname, lastname)
);
FLUSH BINARY LOGS;
FLUSH ENGINE LOGS;
FLUSH ERROR LOGS;
FLUSH GENERAL LOGS;
FLUSH RELAY LOGS;
FLUSH SLOW LOGS;
use mydb;
EXPLAIN FORMAT=JSON INTO @myselect
select id,firstname,lastname from t1 where firstname='ln_10000000';
select @myselect;
{
"query_block": {
"select_id": 1,
"cost_info": {
"query_cost": "1.02"
},
"table": {
"table_name": "t1",
"access_type": "ref",
"possible_keys": [
"fn_ln_index"
],
"key": "fn_ln_index",
"used_key_parts": [
"firstname"
],
"key_length": "402",
"ref": [
"const"
],
"rows_examined_per_scan": 1,
"rows_produced_per_join": 1,
"filtered": "100.00",
"using_index": true,
"cost_info": {
"read_cost": "0.93",
"eval_cost": "0.10",
"prefix_cost": "1.03",
"data_read_per_join": "816"
},
"used_columns": [
"id",
"firstname",
"lastname"
]
}
}
}
FLUSH BINARY LOGS;
FLUSH ENGINE LOGS;
FLUSH ERROR LOGS;
FLUSH GENERAL LOGS;
FLUSH RELAY LOGS;
FLUSH SLOW LOGS;
use mydb;
EXPLAIN FORMAT=JSON INTO @myselect
select id,firstname,lastname from t1 where firstname='fn_10000000';
select @myselect;
{
"query_block": {
"select_id": 1,
"cost_info": {
"query_cost": "1.06"
},
"table": {
"table_name": "t1",
"access_type": "ref",
"possible_keys": [
"fn_ln_index"
],
"key": "fn_ln_index",
"used_key_parts": [
"firstname"
],
"key_length": "402",
"ref": [
"const"
],
"rows_examined_per_scan": 1,
"rows_produced_per_join": 1,
"filtered": "100.00",
"using_index": true,
"cost_info": {
"read_cost": "0.96",
"eval_cost": "0.10",
"prefix_cost": "1.06",
"data_read_per_join": "816"
},
"used_columns": [
"id",
"firstname",
"lastname"
]
}
}
}
FLUSH BINARY LOGS;
FLUSH ENGINE LOGS;
FLUSH ERROR LOGS;
FLUSH GENERAL LOGS;
FLUSH RELAY LOGS;
FLUSH SLOW LOGS;
use mydb;
EXPLAIN FORMAT=JSON INTO @myselect
select id,firstname,lastname from t1 where firstname='fn_10000000' and lastname='ln_10000000';
select @myselect;
{
"query_block": {
"select_id": 1,
"cost_info": {
"query_cost": "1.07"
},
"table": {
"table_name": "t1",
"access_type": "ref",
"possible_keys": [
"fn_ln_index"
],
"key": "fn_ln_index",
"used_key_parts": [
"firstname",
"lastname"
],
"key_length": "804",
"ref": [
"const",
"const"
],
"rows_examined_per_scan": 1,
"rows_produced_per_join": 1,
"filtered": "100.00",
"using_index": true,
"cost_info": {
"read_cost": "0.97",
"eval_cost": "0.10",
"prefix_cost": "1.07",
"data_read_per_join": "816"
},
"used_columns": [
"id",
"firstname",
"lastname"
]
}
}
}
FLUSH BINARY LOGS;
FLUSH ENGINE LOGS;
FLUSH ERROR LOGS;
FLUSH GENERAL LOGS;
FLUSH RELAY LOGS;
FLUSH SLOW LOGS;
use mydb;
EXPLAIN FORMAT=JSON INTO @myselect
select id,firstname,lastname from t1 where lastname='ln_10000000' and firstname='fn_10000000';
select @myselect;
{
"query_block": {
"select_id": 1,
"cost_info": {
"query_cost": "1.07"
},
"table": {
"table_name": "t1",
"access_type": "ref",
"possible_keys": [
"fn_ln_index"
],
"key": "fn_ln_index",
"used_key_parts": [
"firstname",
"lastname"
],
"key_length": "804",
"ref": [
"const",
"const"
],
"rows_examined_per_scan": 1,
"rows_produced_per_join": 1,
"filtered": "100.00",
"using_index": true,
"cost_info": {
"read_cost": "0.97",
"eval_cost": "0.10",
"prefix_cost": "1.07",
"data_read_per_join": "816"
},
"used_columns": [
"id",
"firstname",
"lastname"
]
}
}
}
FLUSH BINARY LOGS;
FLUSH ENGINE LOGS;
FLUSH ERROR LOGS;
FLUSH GENERAL LOGS;
FLUSH RELAY LOGS;
FLUSH SLOW LOGS;
use mydb;
EXPLAIN FORMAT=JSON INTO @myselect
select id,firstname,lastname from t1 where lastname='ln_10000000';
select @myselect;
{
"query_block": {
"select_id": 1,
"cost_info": {
"query_cost": "3150663.64"
},
"table": {
"table_name": "t1",
"access_type": "index",
"possible_keys": [
"fn_ln_index"
],
"key": "fn_ln_index",
"used_key_parts": [
"firstname",
"lastname"
],
"key_length": "804",
"rows_examined_per_scan": 30667649,
"rows_produced_per_join": 3066764,
"filtered": "10.00",
"using_index": true,
"cost_info": {
"read_cost": "2843987.16",
"eval_cost": "306676.47",
"prefix_cost": "3150663.64",
"data_read_per_join": "2G"
},
"used_columns": [
"id",
"firstname",
"lastname"
],
"attached_condition": "(`mydb`.`t1`.`lastname` = 'ln_10000000')"
}
}
}