mysql索引:索引类型优缺点,索引操作
什么是索引:创建在表上对数据库表中一列或多列的值进行排序的一种结构
索引:优缺点
优点
- 加快查询速度
- 降低了排序的时间
- 加快了表间连接速度
缺点
- 存储索引占用磁盘空间
- 降低了插入和更新的速度
索引类型:
1、聚集索引:
- 又叫主键索引
特点: 按主键排序 叶子节点保存一行记录的所有内容 优点: 如果根据主键查询,不需要回表 缺点: 占用存储空间大 主键的值不规则,会造成频繁的页分裂,影响性能 |
2、非聚集索引:
- 唯一索引
- 普通索引(单列索引)
- 组合索引(多列索引):复合索引、联合索引
特点: 叶子节点保存的是主键的值和索引列的值 优点: 占用存储空间少 一个表可以创建多个非聚集索引 缺点: 如果非索引覆盖,就需要回表查询 |
索引操作
查看索引:
show index from 表名;
创建索引:
索引创建三种方式
1、create table: 建表的时候创建
2、create index:在已经存在的表上创建
3、alter table :创建
以下命令语句分别展示创建主键索引(PRIMA RY KEY) ,联合索引 (UNIQUE)和普通索引 (INDEX)的方法。
方式一:alter table 创建
alter table 表名 add index 索引名 列名; 举例:alter table 表名 add index index_tid(tid); #创建普通索引;创建一个名为index_tid的普通索引,索引列是tid,下同 alter table 表名 add unique 索引名 列名; 举例:alter table 表名 add unique index index_tid(tid); #创建唯一索引 alter table 表名 add primary key 索引名 列名; 举例:alter table 表名 add primary key index index_tid(tid); #创建主键索引
方式二:在已经存在的表上创建
create index 索引名 on 表名 列名; 举例:create index index_tid on 表名(tid) #创建普通索引 create unique index 索引名 on 表名 列名; 举例:create unique index index_tid on 表名(tid) #创建唯一索引
方式三:建表的时候创建
create table 表名( tid int, tname char(20), index index_tname(tname) //普通索引名称tname )
删除索引:
drop index index_tid on 表名; 举例: drop index index_tid on 表名 alter table 表名 drop index 索引名; 举例:alter table 表名 drop index index_tid;