MySQL 官方对索引的定义:索引(Index)是帮助 MySQL高效获取数据的数据结构。所以 索引的本质就是数据结构。索引的目的在于提升查询效率,可类比字典、书籍的目录等这种形式。mysql
可简单理解为 排好序的快速查找数据结构。在数据以外,数据库系统还维护着 知足特定算法查询的数据结构,这些数据结构以某种方式指向数据。这样就能够在这些数据结构上实现高级查找算法,这种数据结构就是索引。算法
通常来讲,索引比较大,不可能所有存储在内存中,所以索引每每以 索引文件 的形式存储在磁盘上。sql
日常所说的索引,若是没有特别指明,都是 B 树索引。其中汇集索引、次要索引、覆盖索引、前缀索引、惟一索引默认都是用 B 树。数据库
能够经过命令 show index from table_name
查看表的索引状况数据结构
索引主要分为如下三类:并发
以索引的结构划分为如下四类:高并发
建立一个普通索引优化
CREATE INDEX index_name ON table_name (column_name(length))复制代码
也能够经过修改表结构的方式来添加索引spa
ALTER TABLE table_name ADD INDEX index_name (column_name(length))复制代码
注:若是是 char、varchar 类型的字段,length 能够小于字段实际长度;若是是blob、text 类型,必须指定 lengthcode
添加主键索引
ALTER TABLE table_name ADD PRIMARY KEY (column_name)复制代码
添加惟一索引
ALTER TABLE table_name ADD UNIQUE (column_name)复制代码
添加全文索引
ALTER TABLE table_name ADD FULLTEXT (column_name)复制代码
添加普通索引
ALTER TABLE table_name ADD INDEX index_name (column_name)复制代码
添加组合索引
ALTER TABLE table_name ADD INDEX index_name (column_name_1, column_name_2, column_name_3)复制代码
DROP INDEX index_name ON table_name复制代码
SHOW INDEX FROM table_name复制代码