MySQL索引


索引是帮助MySQL高效获取数据的数据结构
提取句子主干,就可以得到索引的本质:索引是数据结构

索引的分类

在一个表中,主键索引只能有一个,唯一索引可以有多个

  • 主键索引 PRIMARY KEY

    • 唯一标识,主键不可重复,只能由一个列作为主键
  • 唯一索引 UNIQUE KEY

    • 避免重复的列出现,唯一索引可以重复,多个列都可以标识为唯一索引
  • 常规索引 KEY / INDEX

    • 默认的,index和key关键字来设置
  • 全文索引 FullText

    • 在特定的数据库引擎下才有,MyISAM
    • 快速定位数据

基础语法

-- 索引的使用
-- 1.在创建表的时候给字段增加索引
-- 2.创建完毕后,增加索引
-- 显示所有的索引信息
SHOW INDEX from student

-- 增加一个全文索引  (索引名)列名
alter table school.student add FULLTEXT studentname(studentname)
-- EXPLAIN 分析sql执行的情况
EXPLAIN select * from student  -- 常规索引(非全文索引)
EXPLAIN select * from student where MATCH(studentname) against('周')

测试索引

-- 插入100万数据.
DELIMITER $$
-- 写函数之前必须要写,标志
CREATE FUNCTION mock ()
RETURNS INT
BEGIN
	DECLARE num INT DEFAULT 1000000;
	DECLARE i INT DEFAULT 0;
	WHILE i<num DO
		INSERT INTO `app_user`(`name`,`email`,`phone`,`gender`)VALUES(CONCAT('用户',i),'19224305@qq.com','123456789',FLOOR(RAND()*2));
		SET i=i+1;
	END WHILE;
	RETURN i;
END;

SELECT mock() -- 执行此函数 生成一百万条数据

测试:

select * from app_user where `name` = '用户9999' -- 0.482s
-- id_表名_字段名 
-- CREATE index 索引名 on 表(字段)
CREATE index id_app_user_name on app_user(`name`)
select * from app_user where `name` = '用户9999'  -- 添加索引之后查询时间0.030s

索引在小的数据量的时候,用处不大,但是数据量很大的时候,区别非常明显

索引原则

  • 索引不是越多越好
  • 不要对经常变动的数据加索引
  • 小数据量的表不需要加索引
  • 索引一般加在常用来查询的字段上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小冻梨♬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值