1.含义及特点
含义:独立的、存储在磁盘上的数据库结构,包含着对数据表里所有记录的引用指针。目的:使用索引用于快速找出在某个或多个列中有一特定值的行。优点:
(1)保证每一行数据的唯一性(2)加快数据的查询速度(3)使用分组和排序语句进行查询时,也能显著减少分组和排序的时间
缺点:
(1)创建和维护索引消耗时间(2)占用磁盘空间
2.分类
普通索引和唯一索引
普通索引:mysql的基本索引类型,允许重复值和空值唯一索引:可以为空值,必须唯一
单列索引:一个索引只包含单个列组合索引:在表的多个字段组合上创建索引 列植的组合必须唯一全文索引
类型为fulltext
允许插入重复值和空值
可在char varchar text的列上创建只有myisam存储引擎支持全文索引
空间索引
对空间数据类型的字段建立索引 geometry point linestring polygon只能在存储引擎为myisam的表中创建
3.设计原则
(1)并非越多越好(2)避免对经常更新的表进行过多索引,对于经常查询的表的建索引(3)数据量小的表不要使用索引(4)频繁进行排序或分组的列上建索引
4.创建与删除
创建
普通索引
INDEX(column)
alter table table_name add INDEX index_name(column)create index index_name on table_name(column)
唯一索引
UNIQUE INDEX index_name(id)
alter table table_name add UNIQUE INDEX index_name(column)create UNIQUE INDEX index_name on table_name(column)
单列索引
INDEX index_name(column)
alter table table_name add INDEX index_name(column)create INDEX index_name on table_name(column)
组合索引
INDEX index_name(column_1,column_2,...)
alter table table_name add INDEX index_name(column_1,column_2,...)create INDEX index_name on table_name(column_1,column_2,...)
全文索引
FULLTEXT INDEX index_name(column)
alter table table_name add FULLTEXT INDEX index_name(column)create IFULLTEXT INDEX index_name on table_name(column)
空间索引
spatial index index_name(column)
alter table table_name add spatial INDEX index_name(column)create spatial index index_name on table_name(column)
删除
alter table table_name drop index index_namedrop index index_name on table_name