MySQL索引的相关知识点

本文详细介绍了MySQL中索引的基本概念、数据结构以及MyISAM和InnoDB存储引擎的索引区别。讨论了主索引与辅助索引的工作原理,并强调了索引对于查询效率的提升。同时,提出了索引创建的策略,包括何时应该建立和不应建立索引的场景。最后,提到了索引的分类,如普通索引、主键索引、唯一索引、全文索引,以及组合索引的最左前缀原则。并给出了使用索引时应注意的事项,如避免NULL列、使用短索引和避免模糊匹配。
摘要由CSDN通过智能技术生成

MySQL
索引
是一种数据结构
查询效率获得提高

MyISAM:
B+树
数据和索引分离
由三个文件组成
frm 存放创建的表的基础信息
myi 索引
myd 数据

数据存储,随意存储,离散程度大,即非聚集索引
即MyISAM都是非聚集索引

主索引:索引值不重复的索引都可以叫主索引
辅助索引:存储的是数据的地址,允许索引值重复


InnoDB
B+树
数据和索引结合,把索引当成数据的一部分

1、数据的存放依赖索引
1、主键 主键索引 主索引
2、唯一键 唯一索引 主索引
主索引:存放数据的索引,不允许索引值重复
3、添加一个隐藏字段 6个字节 主索引

叶子节点不能存储完整的数据,所以其存储的是主索引的索引值
存储数据的索引叫主索引,其他的都叫辅助索引(叶子节点)

辅助索引查询两次:
第一次辅助索引找到主索引的索引值
第二次主索引找到数据

索引的建立能提高效率 能在其他字段上建立索引

为什么不自动建立:
索引是一个数据结构,占空间和其他资源
空间换时间的概率

索引的优化:
1、什么时候建立索引
1、经常用于查询的字段
2、主键的字段
3、用于两表连接的字段 e.g.:where
4、经常用于排序查询的字段
2、什么时候不应该建立
1、不经常用于查询的字段
2、数值较少的字段
3、text,BLOB类型等的字段,数值太大了,I/O效率低
4、修改性能大于查询性能 insert密集型 排序

索引的分类
索引建立时,字段的特性
1、普通索引
1、create index index_name on tbname(field_name);
2、alter table tbname add index index_name on field_name;
3、建表的过程中
index index_name(field_name);
2、主键索引
3、唯一索引
4、全文索引(一般情况不建议用)
非叶子节点的索引值都是text字段的数值
数值太大了,索引结构庞大
I/O效率低
5、单列索引
6、组合索引(属于多列索引)
最左前缀原则,从最左边开始包含

索引的注意事项:
1、包含NULL的列
2、使用短索引 提高I/O效率
3、like语句的操作,模糊匹配,不会用到索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值