![](https://csdnimg.cn/release/download_crawler_static/86296165/bg4.jpg)
2.3.2 索引的优势和劣势
优势:索引可以提高数据检索的效率,降低数据库的IO成本,通过索引对数据进行排序,降低数据
排序的成本,降低了CPU的消耗
劣势:
1. 实际上索引也是一张表,该表保存了主键和索引字段,并指向实体表的记录,所以索引列也是
要占用空间的。
2. 虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行插入、删除和更新。
因为更新表时,还要保存一下索引文件每次更新添加了索引列的字段,都会调整因为更新带来
的键值变化后的索引信息
3. 索引只是提高效率的一个因素,如果你的mysql有大数据量的表,就需要花时间研究建立最优
秀的索引,或优化查询语句
2.3.3 索引分类
单值索引:一个索引只包含单个列,一个表可以有多个单值索引
唯一索引:索引列的值必须唯一,但允许有空值
复合索引:一个索引包含多个列
基本语法
使用alter命令
2.3.4 索引结构
1、BTree索引
#创建索引 如果是char、varchar类型,length可以小于字段实际长度,如果是blob和
text,必须指定length
create [unique] index indexName on mytable(columnname(length));
alter mytable add [unique] index [indexName] on (columnname(length));
#删除
drop index [indexName] on mytable;
#查看
show index from table_name
1
2
3
4
5
6
7
8
9
#添加主键
alter table tbl_name add primary key (column_list);
#唯一索引
alter table tbl_name add unique index_name (column_list);
#普通索引
alter table tbl_name add index index_name (column_list);
#全文索引
alter table tbl_name add fulltext index_name (column_list);
1
2
3
4
5
6
7
8