MySQL 索引详解
索引旨在提高数据库性能,通过特定数据结构组织内存中的数据以提升搜索效率。虽然查询速度可能成百上千倍提升,但写操作(插入、更新、删除)会增加 IO 开销。
常见索引类型
- 主键索引 (primary key)
- 唯一索引 (unique)
- 普通索引 (index)
- 全文索引 (fulltext)
一、索引作用
案例:无索引查询
构建海量数据表进行测试。若未建立索引,查询特定记录耗时较长。例如查询员工编号为 998877 的员工,在无索引情况下耗时约 6.17 秒。在高并发场景下可能导致系统负载过高。
drop database if exists my_index;
create database if not exists my_index default character set utf8;
use my_index;
-- 创建存储过程添加海量数据
delimiter $$
create function rand_string(n INT) returns varchar(255) begin
declare chars_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';
declare return_str varchar(255) default '';
declare i int default 0;
while i < n do
set return_str = concat(return_str, substring(chars_str, floor(1+rand()*52), 1));
set i i ;
while;
return_str;
$$
delimiter ;
delimiter $$
insert_emp( (), max_num ())
i ;
autocommit ;
repeat
i i ;
EMP ((i), rand_string(), , , curdate(), , , rand_num());
until i max_num
repeat;
;
$$
delimiter ;
insert_emp(, );


