【数据库】MySQL索引分析

  • in 使用不当

  • 使用不当

  • 查询优化不走索引

  • 总结

  • 约束以及分类

  • MySQL中InnoDB表的聚簇索引

索引

一种能帮助mysql提高查询效率的数据结构:索引数据结构

“索引(在MySQL中也叫“键key”)是存储引擎快速找到记录的一种数据结构。”

——《高性能MySQL》

索引的理解
  • 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。

  • 索引是对数据库表中的一列或多列的值进行排序的一种数据结构

  • 索引的作用就类似于书本的目录,新华字典的拼音,偏旁部首的首查字,可以快速的检索到需要的内容,所以当数据达到几百万的时候,那么索引就很有必要了。其功能是帮助我们快速匹配查找到需要的数据行,是数据库性能优化最常用的工具之一

索引优缺点

优点

  • 1.大大加快数据的检索速度;

  • 2.创建唯一性索引,保证数据库表中每一行数据的唯一性;

  • 3.加速表和表之间的连接;

  • 4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

缺点

  • 1.索引需要占用数据表以外的物理存储空间

  • 2.创建索引和维护索引要花费一定的时间,维护索引需要耗费数据库资源,并且要占用磁盘空间

  • 3.当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。

结论:数据库表并不是索引加的越多越好,而是仅为那些常用的搜索字段建立索引效果才是最佳的!

索引的分类
  • 主键索引:PRIMARY KEY

设定为逐渐后,数据库自动建立索引,innodb为聚簇索引,主键索引列值不能有空(Null)

  • 单值索引:又叫单列索引、普通索引

一个索引只包含单个列,一个表可以有多个单列索引

  • 唯一索引:

索引列的值必须唯一,但允许有空值(Null),但只允许有一个空值(Null)

  • 复合索引:又叫组合索引

一个索引可以包含多个列,多个列共同构成一个复合索引!

  • 全文索引:Full Text (MySQL5.7之前,只有MYISAM存储引擎支持全文索引

全文索引类型为FULLTEXT,在定义索引的列上支持值的全文查找,允许在这些索引列中插入重复值和空值。全文索引可以在Char 、Varchar 上创建。

索引的基本操作

SHOW INDEX FROM table_name;#查看索引详情:

  1. 主键索引 PRIMARY KEY

它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引,直接在字段后面加PRIMARY KEY。注意:一个表只能有一个主键。

  1. 唯一索引 UNIQUE

唯一索引列的值必须唯一,但允许有空值。

ALTER TABLE 表名 ADD UNIQUE 索引名 ON (列名) #修改表结构添加

CREATE UNIQUE INDEX 索引名 ON 表名(列名) #直接创建

如果是唯一组合索引,则列值的组合必须唯一。

ALTER TABLE 表名 ADD UNIQUE 索引名 (列名1,列名2) #修改表结构添加

CREATE UNIQUE INDEX 索引名 ON 表名(列名1,列名2) #直接创建

  1. 普通索引 INDEX:这是最基本的索引,命令如下

ALTER TABLE 表名 ADD INDEX ON (列名) #修改表结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值