MySQL ------ 索引
一:索引
1、数据库索引
-
在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据
-
数据库中的索引是某个表中一列或若干列值得集合,以及物理标识这些值得数据页得逻辑指针清单
2、索引的作用
- 数据库能够大大加快查询速率
- 降低数据库的 IO 成本,并且索引还可以降低数据库的排序成本
- 通过创建唯一性索引保证数据表数据的唯一性
- 加快表与表之间的连接
- 在使用分组和排序的时候,可大大减少分组和排序时间
3、索引的分类
- 普通索引
最基本的索引,而且没有唯一性之类的限制
- 唯一性索引
与普通索引的区别在于: 索引列的所有制都只能出现一次,必须唯一
- 主键
是一种唯一性的索引,必须指定为“ primary key ”
- 全文索引
mysql 从3.23.23版本开始支持全文索引和全文检索,在mysql 中,全文索引的索引类型为 fulltext ,全文索引可以在 varchar 或者 text 类型的列上创建
- 单列索引与多列索引
索引可以是单列上创建的索引,也可在多列上创建的索引
4、创建索引的原则依据
-
表的主键、外键必须有索引
-
数据量超过 300 行的表应该有索引
-
经常与其他表进行连接的表,在连接字段上应该建立索引
-
唯一性太差的字段不适合建立索引
-
更新太频繁的字段不适合创建索引
-
经常出现在 where 子句中的字段,特别是大表的字段,应该建立索引
-
索引应该建立在选择性高的字段上
-
索引应该建立在小字段上,对于大的文本字段甚至超长字段,不要建立索引
二、创建索引的方法
(1)创建普通索引 (tablename:表名称)
create index <索引的名字> on tablename(列的列表);
(2)创建唯一性索引
create unique index <索引的名字> on tablename(列的列表);
(3)创建主键索引
第一种方法:(创建新的表)
create table tablename ([...],primary key(列的列表));
第二种方法:(已有表)
alter table tablename add primary key(列的列表);
(4)创建全文索引
create fulltext index 索引名称 on 表名(列的列表);
(5)创建组合索引
create index 索引名称 on 表名 (列的列表1,列的列表2 ...);
(6)查看索引
show index from tablename;
show keys from tablename;