MySQL自娱—13.索引
-
索引(index)是帮助mysql高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引就是数据结构。
-
索引的分类
- 主键索引 - PRIMARY KEY 唯一的标识,主键不可重复,只能有一个 - 唯一索引 - UNIQUE KEY 避免重复的列出现。唯一索引可以重复,多个列都可以标识为唯一索引。 - 常规索引 - KEY/INDEX 默认的,关键字来设置 - 全文索引 - FullText 在特定的数据库引擎下才有,MyISAM。快速定位数据
-
实例演示
# 创建一个有索引的表 CREATE TABLE IF NOT EXISTS `student` ( `StudentNo` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号', `passwd` VARCHAR(20) NOT NULL COMMENT '密码', `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名', `sex` CHAR(1) NOT NULL DEFAULT '女' COMMENT '性别', `birthday` DATETIME DEFAULT NULL COMMENT '生日', `gradeid` INT(10) NOT NULL COMMENT '学生id', `address` VARCHAR(100) DEFAULT NULL COMMENT '住址', `Email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱', `IdentityCard` VARCHAR(18) DEFAULT NULL COMMENT '身份证号', PRIMARY KEY (`StudentNo`), UNIQUE KEY `IdentityCard` (`IdentityCard`), KEY `Email` (`Email`) )ENGINE=INNODB DEFAULT CHARSET=utf8 comment='学生表'; # 查看索引信息 SHOW INDEX FROM student; # 增加一个全文索引 ALTER TABLE `student` ADD FULLTEXT INDEX `name`(`name`); # explain分析sql的执行情况 explain select * from student; explain select * from student where match(`name`) against('刘');
-
创造百万数据做测试
delimiter && -- 写函数之前必须要写,标志 create function mock_data() return int begin declare num int default 1000000; declare i int default 0; while i<num do -- 插入语句 set i=i+1; end while end; insert into app_user(`字段1`,'字段2'...) values(concat('用户',i),'xxx@qq.com') # 没整理完 回头研究这个
-
索引的原则
- 索引不是越多越好 - 不要对经常变动数据加索引 - 小数据量的表不需要加索引 - 索引一般加在常用来查询的字段上
-
索引的数据结构
- Hash类型的索引 - Btree: InnoDB的默认数据结构
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律