Mysql Non cluster combined fields select where order by field different time cost
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')" } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现