Mysql索引

索引的含义及其优缺点

含义:索引时创建在表上的,是对数据库表中一列或多列数据排序的一种结构,可以提高查询的效率
优点和缺点
索引的优点是可以提高检索数据的速度,这是创建索引的最主要的原因:对于有依赖关系的子表和父表之间的联合查询时,可以提高查询速度;使用分组和排序子句进行数据查询时,同样可以显著节省查询中分组和排序的时间。

索引的缺点是创建和维护索引需要耗费时间,耗费时间的数量随着数据量的增加而增加;索引需要占用物理空间,每一个索引要占一定的物理空间;增加、删除和修改数据时,要动态的维护索引,造成数据的维护速度降低了。

索引的分类

1.普通索引
不加任何的限制条件设置的索引
2.唯一性索引
限制该索引的值是唯一的
3.全文索引
提高查询数据量大的字符串类型字段的效率,用FULLTEXT关键字
4.单列和多列索引
单列索引就是只对某一字段索引,多列字段就是对多个字段的索引
5.空间索引
这类索引很特殊,只用于空间类型的数据类型上。初学很少用。用SPATIAL关键字

索引的设计原则

1.选择唯一性索引
2.为经常需要排序,联合和分组的字段建立索引
3.为经常作为查询条件的字段建立索引
4.限制索引的数目,因为会占用磁盘空间
5.尽量使用数据量小的索引
6.尽量使用前缀来索引
7.删除不再使用或很少用的索引

索引建在哪里,它的数据结构又是什么?

索引建立在表上,它的结构放在两种存储引擎上,一种是Innodb引擎,一种是mylsam引擎。
Innodb:只在B+树的叶子节点存储数据,存储是
建立索引的所有字段和主键。
Myisam:只在B+树的叶子节点存储数据存储是
建立索引的所有字段和数据的地址。
Innodb
.frm 存储表结构
.ibd 存储数据和索引
myIsam:
.myi : 存储索引
.myd : 存储数据
.frm : 存储表结构

索引的数据结构是B+树
例如index(a,b,c)类似与二叉树,先找到a,按照a-b-c的顺序
例如index(a,b,c)类似与二叉树,先找到a,按照a-b-c的顺序

那么两种引擎下的索引哪个更好?
根据具体情况分析哪个索引更好。
只考虑查询效率:InnoDB引擎下的索引更好。数据和索引在同一个文件下。
难以维护 。数据和索引在同一个文件下,那么数据的修改必然引起索引的修改。

myIsam: 数据和索引分开存储 更好维护 查询效率低

如何选择引擎:
根据实际开发场景:
(1)要求更高查询效率并且数据的修改不频繁。 InnoDb
(2)数据修改频繁 选择Myiasm
(3)如果你需要的功能更多(你想使用事务、外键)这时只能选择InnoDb引擎。
外键和事务的维护实际上也是也耗费时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值