Mysql索引整理总结
(一)简介
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
举例说明索引:如果把数据库中的某一张看成一本书,那么索引就像是书的目录,可以通过目录快速查找书中指定内容的位置,对于数据库表来说,可以通过索引快速查找表中的数据。
(二)原理
存储的索引的原理大致概括为以空间换时间,数据库在未添加索引的时候进行查询默认的是进行全量搜索,也就是进行全局扫描,有多少条数据,就搜索了多少条数据,查找效率极低.
加了索引后,会将建立索引的KEY值放在一个n叉树上(BTree)。因为B树的特点就是适合在磁盘等直接存储设备上组织动态查找表,每次以索引进行条件查询时,会去树上根据key值直接进行搜索.
(三)索引的优缺点
优点:(1)建立索引的列可以保证行的唯一性,生成唯一的rowId
(2)建立索引可以有效缩短数据的检索时间
缺点:(1)创建索引和维护索引需要时间成本.随着数据量的增大而增大
(2)创建索引和维护索引需要空间成本.
(3)降低增删改效率
(四)索引的种类
(1)单列索引
(2)组合索引
(3)唯一索引
(4)主键索引
(5)全文索引
(四)索引的创建方式(!!!此处只适合单列索引,其他索引的创建方式请百度)
(1)直接创建索引:
CREATE INDEX index_name ON table_name(col_name);
(2)修改表结构的方式添加索引
ALTER TABLE table_name ADD INDEX index_name(col_name);
(3)创建表的时候同时创建索引
CREATE TABLE news
(
id
int(11) NOT NULL AUTO_INCREMENT ,
title
varchar(255) NOT NULL ,
content
varchar(255) NULL ,
time
varchar(20) NULL DEFAULT NULL ,
PRIMARY KEY (id
),
INDEX index_name (title(255))
)
(4)删除索引
DROP INDEX index_name ON table_name;
或者
alter table 表名
drop index 索引名;