MySql索引简介

是什么索引?

MySQL官方对索引的描述为:索引是一种帮助MySQL高效获取数据的数据结构。
从官方的描述种,我们可以看出,索引是一种数据结构。其实我觉得索引本质上就是一组MySQL帮我维护的有序数据结构,这些数据结构是一种指针,可以指向数据。因为索引是有序的,所以我们查找索引比直接查找数据快得多。

优势

索引的优势不必多说,当我们的数据量特别大的时候,一个较好的索引能大大降低我们的检索时间,可以类比字典的目录,没有目录的话,我们找一个字就得一个一个对比。另外因为索引是有序的,所以我们进行排序的时候索引也能降低排序时间。

缺点

首先索引其实也是一种数据,在底层也是保存在磁盘中,所以所有也会占据磁盘空间。另外就是索引虽然可以降低检索时间,但是因为数据库要帮我们维护索引,也就是说我们在经行表的写操作时,数据库不仅仅对数据进行修改,同时也要对索引经行修改,降低了修改数据的速度。

索引分类

单值索引:一个索引只包含单列,一个表可以有多个单值索引。
唯一索引:索引列的值唯一,可以有空值。(主键可以看作一种特殊的唯一索引)
组合索引:索引包含多个列的值。

基本语法

建立
CREATE INDEX index_mytable_name ON mytable(name);
或者
ALTER TABLE mytable ADD INDEX index_mytable_name (name);
唯一索引:
CREATE UNIQUE INDEX index_mytable_name ON mytable(name);
ALTER TABLE mytable ADD UNIQUE INDEX index_mytable_name (name);
如果是字符串字段,还可以指定索引的长度,在列命令后面加上索引长度就可以了(例如:name(11))
删除
DROP INDEX indexName on mytable;
查看
SHOW INDEX FROM mytable;

索引分类

一般来说索引有B树索引、hash索引、全文索引等等。其中B树索引应用最广,比如MySQL用的就是B+树,而mongodb用的是B树,B树与B+树的区别可以参考:B树与B+树

适合建索引的情形

1、主键自动建立唯一索引。
2、频繁作为条件查询的字段应该建索引。
3、与其他表的外键建立索引。
4、需要排序的字段应该建索引。
5、需要统计或者分组的字段应该建索引。

不应该建索引的情形

1、表数据很少。(只有很少的数据建索引区别不大)
2、经常需要增删改的表。(索引会降低更新表的速度)
3、数据分布均匀的表字段不应该作为索引字段。(比如性别,只有男女)
4、需要频繁修改的字段也不应该建立索引。
5、条件查询一般不会用到的字段也不应该建立索引。(银行系统一般通过银行卡号而不是姓名查询用户,索引这里姓名就不做索引)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值