MySQL索引

什么是索引

索引是一种特殊的数据库结构,由数据表中的一列或多列组合而成,可以用来快速查询数据表中有某一特定值的记录。通过索引,查询数据时不用读完记录的所有信息,而只是查询索引列。否则,数据库系统将读取每条记录的所有信息进行匹配。

索引的优势

  •  提高查询速度:索引可以提高数据的查询速度,减少扫描数据表的次数,尤其是在大数据表中,可以显著提高查询效率。
  • 加速排序:如果需要对结果进行排序,如果有索引,则会直接使用索引中的排序结果,而不是重新排序数据表,这样也可以提高查询效率。
  • 加速分组:如果需要对结果进行分组,如果有索引,则可以直接使用索引中的分组结果,而不是重新分组数据表,这样也可以提高查询效率。
  • 优化连接:如果需要进行连接查询,如果有索引,则可以使用索引中的数据进行连接操作,而不是对整个数据表进行连接操作,这样也可以提高查询效率。
  • 减少磁盘I/О操作:索引可以直接定位到数据行,而不需要扫描整个数据表,这样可以减少磁盘/O操作,提高查询效率。

索引的缺点

  • 索引的存储需要占用磁盘空间;
  • 当数据的量非常巨大时,索引的创建和维护所耗费的时间也是相当大的;
  • 当每次执行CRU操作时,索引也需要动态维护,降低了数据的维护速度。

 索引的类型

  1. 普通索引
  2. 唯一索引
  3. 主键索引
  4. 组合索引
  5. 全文索引

创建索引 

#如果只关联一个字段为单列索引,如果关联多个字段即为联合索引或组合索引。
Create [UNIQUE | FULLTEXT] INDEX index_name ON table_name(index_col_name,...);
 
#创建唯一索引
Create UNIQUE INDEX index_name ON table_name(index_col_name);
 
#创建联合索引
Create FULLTEXT INDEX index_name ON table_name(index_col_name,...);

 查看索引

SHOW INDEX FROM table_name;

删除索引

DROP INDEX index_table on table_name;

索引的数据结构

B+Tree

B+Tree是对B-Tree的改进版,每个非叶子节点上只保存索引值和指针,只有叶子节点才保存数据。

MySql每个索引节点大小默认是16KB。索引值大小8B、指针值大小6B,那么一个节点可以存储1170个元素;存储1KW数据,只需要3层就可以了。

查看每个节点大小:show global status like 'innodb_page_size';

MySql为了提高性能,会预选把根节点的数据加载到内存中。那么如果是3层的树,只要2次IO就可以找到指定的数据了

所有叶子节点,使用链表串起来,大大提升了范围查询的速度

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值