mysql学习(8):索引分类详解

前言

索引可以大大提高MySQL的检索速度,本文将详细讲解几种不同的索引类型,及索引常用的数据结构B-树。

正文

1、常见索引类型

1.1 普通索引

普通索引仅加速查询,

CREATE INDEX index_name ON table_name(column_name);

1.2 唯一索引

与普通索引类似,不同的是:索引的列值必须是唯一的,但允许有空值。如果是组合索引,则列值的组合必须唯一。

CREATE UNIQUE INDEX index_name ON table_name(column_name);

1.3 主键索引

主键索引是一种特殊的唯一索引,一张表只能有一个主键,不允许有空值。一般在建表时指定主键,就会自动创建主键索引。

CREATE TABLE `table` (
    `id` int(11) NOT NULL AUTO_INCREMENT ,
    `title` char(255) NOT NULL ,
    PRIMARY KEY (`id`)
);

1.4 组合索引

也叫多列索引、联合索引。指在多个字段上创建索引,使用组合索引时要遵循最左前缀原则,这个原则我会另开一篇博客来讲。

CREATE INDEX index_name ON table_name(column1, column2);

1.5 全文索引

全文索引主要用来查找文本中的关键字,而不是直接与索引中的值比较。全文索引和其他索引不一样,它更像是一个搜索引擎。实际中如果用到全文索引,会使用到ES等搜索引擎。

CREATE FULLTEXT INDEX index_name ON table_name(column_name)

总结

虽然索引可以提高查询速度,但是却会降低表更新的速度(增删改),因为在更新表时,不仅要更新数据,还要更新索引文件。

索引设计和使用原则:
1、需要加索引的字段,要在where条件中;
2、数据量少的字段不需要加索引,因为建索引有一定的开销,如果数据量小则没必要建索引(速度反而慢)
3、选择使用唯一索引,顾名思义,唯一索引的列值是唯一的,可以更快速的确定某条记录,例如学生表的学号就适合使用唯一索引,而学生的性别则不合适使用。
4、使用短索引,对列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个char(255)的列,如果再前10个或20个字符内,多数的值是唯一的,那么就不要对整个列进行索引,短索引不仅可以提高查询速度,还可以节省磁盘空间和IO操作。
5、联合索引相比每个列分别建索引更有优势,因为索引建的越多就越占磁盘空间,在更新数据的时候速度会更慢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值