本期技术分享讲师:极光老师
题目内容:
数据库索引实现原理
本期语音讲解
本期解析
索引的思想是用空间换时间, 缺点如果数据量太大,过多索引占用大量磁盘空间,所以一般只对关键字段,经常需要检索的字段设置索引。
索引的创建和删除
alter table table_name add index index_name (column_list) ;
drop index index_name on table_name;
工具对索引的支持
索引方式,也是索引的数据结构,BTREE 说白了用树形结构存储索引信息,大部分数据库系统及文件系统都采用B-Tree或其变种B+Tree作为索引结构(树的数据结构里面还有二叉树,平衡二叉树,红黑树,一系列知识,有兴趣的同学可以自己扩展,作为了解即可)
HASH结构也可以用作索引存储结构,HASH 可以理解成java中map或者python中字典,key-value 结构,sql语句中 = 或者 != 用HASH索引性能其实比BTREE高,为什么数据库一般默认还是BTREE, 主要支持更复杂的表达式 比如 BETWEEN等操作
索引类型也叫索引种类,为了满足业务
唯一索引:加速查询 + 列值唯一(可以有null)
主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个
组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并
全文索引:对文本的内容进行分词,进行搜索 (高级版本新特性)
对应的脚本
1.PRIMARY KEY(主键索引)
mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
2.UNIQUE(唯一索引)
mysql>ALTER TABLE `table_name` ADD UNIQUE (`column` )
3.INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
4.FULLTEXT(全文索引)
mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column` )
5.多列索引
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
领取专属 10元无门槛券
私享最新 技术干货