本文是关于mysql数据库索引,那么对于索引我们到底要学些什么呢?先来搞清楚以下几点:

何为索引

索引共有几种类型

怎样创建索引

索引设计有哪些基本原则

先建一张user表,结构如下:

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

——《高性能MySQL》

索引的本质其实就是一种数据结构,其功能是帮助我们快速匹配查找到我们需要的数据,同事也是数据库性能优化最常用的工具之一。

类似于字典,大家都知道使用字典查找你们想要的字的内容时,你只要知道这个字大发音或者能写出这个字,那么你就能很快查到该字的内容。

使用SHOW INDEX FROM 表名称;查看索引详情

show index from user;

主键 PRIMARY KEY

主键就是一种索引,并且是一种特殊的、唯一的、不允许有空值的所以。一般是在数据库表创建的时候创建。另外说明:同一张表里有且只能拥有一个主键。

唯一索引 UNIQUE

唯一索引列说明该列中不能有重复的,但允许有空值。如果是组合索引,则列值的组合必须唯一。

可以通过ALTER TABLE 表名称 ADD UNIQUE (列名称);创建唯一索引

可以通过ALTER TABLE 表名称 ADD UNIQUE (列A,列B);创建唯一组合索引

普通索引 INDEX

最基本的索引,它没有任何限制。可以通过

ALTER TABLE 表名称 ADD INDEX 索引名称(列名);创建普通索引

组合索引 INDEX

组合索引,即一个索引包含多个列。多用于避免回表查询。可以通过ALTER TABLE 表名称ADD INDEX 索引名称(列A, 列B, 列C);创建组合索引

全文索引 FULLTEXT

全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。

可以通过ALTER TABLE 表名称ADD FULLTEXT (列);创建全文索引

索引一经创建不能修改,如果要修改索引,只能删除重建。可以使用DROP INDEX 索引名称 ON 表名称;删除索引。

适合索引的列是出现在where子句中的列,或者连接子句中指定的列

基数较小的类,索引效果较差,没有必要在此列建立索引

使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,这样能够节省大量索引空间

不要过度索引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。所以只保持需要的索引有利于查询即可。

原文:cnblogs.com/songwenjie/p/.html

更多关于mysql性能优化

关注后回复福利有惊喜哟