> 文档中心 > mysql索引的定义及优缺点,创建和修改及删除

mysql索引的定义及优缺点,创建和修改及删除

目录

1.索引的定义

2.索引的分类

3.索引的优点

4.索引的缺点

5.索引的设计原则

6.索引的创建

6.1.创建新表并添加索引

6.2.在已存在的表添加索引

6.3.使用cerate index创建索引

7.查看表索引

8.删除索引


1.索引的定义

索引,也称作"键(key)",是存储引擎用于快速查找记录的一种数据结构,用来快速查询数据库表中的特定记录.
简单来说索引就好比书上的目录.

2.索引的分类

(1) 普通索引
基本索引雷西兴,允许在定义索引的列中插入重复值和空值
(2) 唯一索引 
索引列的值必须唯一,可以存在空值
(3) 复合索引
在数据标的多个列上创建的索引
(4) 全文索引
是一种特殊的索引,查找的是文本中的关键字,而不是直接比较索引的值
(5) 空间索引
对空间数据类型建立的索引(四种空间数据类型: GEOMETRY,POINT,LINESTRING,POLYGON),需要创建的列必须声明不为空

3.索引的优点

(1)提高数据查询速度
(2)通过创建唯一索引,可以保证数据库表中的每一行数据的唯一
(3)实现数据的参照完整性方面,可以加速表与表间的连接
(4)在分组和排序子句查询时,减少分组和排序的时间
 

4.索引的缺点

(1)创建以及维护需要耗费时间,并且随着数据量的增加耗费的时间也会增加
(2)占用磁盘空间,如果存在大量索引,索引文件可能会比数据文件更加快的达到最大文件尺寸
(3)对数据进行增删改操作时,索引也需要动态维护,会降低数据的操作速度

5.索引的设计原则

(1)不要建立过多的索引
(2)为用于搜索,排序或分组的列建立索引,二用于显示输出的列不适宜建立索引
(3)使用唯一索引,并考虑数据列的基数
(4)使用短索引,应尽量选用长度较短的数据类型
(5)为字符串类型的列建立索引是,应尽量指定前缀长度,而不是索引这些列的完整长度,这样的话可以节省大量的索引空间,提高查询速度
(6)利用最左前缀
(7)让参与比较的索引类型保持匹配

6.索引的创建

6.1.创建新表并添加索引

创建goods表,添加索引
CREATE TABLE users(
id INT(10) NOT NULL,name VARCHAR(50),
age INT(100),email VARCHAR(50),addTime TIMESTAMP,
UNIQUE  INDEX  SY_name(name(50))
#UNIQUE :标识唯一索引;
#FULLTEXT : 标识全文索引;
#SPATIAL: 标识空间索引;
#INDEX和KEY : 标识索引关键字,选其一即可;
);

6.2.在已存在的表添加索引

ALTER TABLE users ADD UNIQUE SY_email(email(100))

6.3.使用cerate index创建索引

CREATE UNIQUE INDEX SY_email ON users(emil(100))

7.查看表索引

SHOW INDEX FROM 表名;
SHOW KEYS FROM 表名;
通过查看表结构查看索引
SHOW CREATE TABLE 表名;

8.删除索引

ALTER TABLE 表名 DROP INDEX 索引名;