实现方式
Hash索引:给表按照某一字段生成一个数字(hashcode),
便于用hashcode直接进行查找
Tree索引
以某一字段为索引,通过树形结构便于查询
功能分类
单列索引
单列索引:一个索引只包含单个列,但一个表中可以有多个单列索引
普通索引
没有较大限制,允许在定义索引的列中插入重复值和空值
创建方式
1.创建表的时候直接指定
create table 表名(
******,
******,
index 索引名(列名)
);
2.直接创建
create index 索引名 on表名(列名);
3﹣修改表结构(添加索引)
alter table表名add index 索引名(列名);
查看索引
1查看数据库所有索引
select * from mysql.'innodb_index_stats' a where a. database_name='表名';
2、查看表中所有索引
select * from mysql.'innodb_index_stats' a where a.'database_name'='数据库名'and a.table_name like'%表名%';
3、查看表中所有索引
show index from 表名;
删除索引
drop index 索引名 on 表名
或
alter table 表名 drop index 索引名
唯一索引:关键词(unique)
与普通索引区别是多了unique
使用:create unique index 索引名 on表名(列名);
主键索引:以添加的主键为索引,在创建主键时自动添加
组合索引
组合索引也叫复合索引 指的是我们在建立索引的时候使用多个字段,可以建立为普通索引或者是
唯一索引;
复合索引的使用复合最左原则。
创建索引的基本语法
create index 索引名 on表名(列名,列名);
删除索引
drop index 索引名 on表名 ;
全文索引:关键字—fulltext
基于相似度的查询,而不是简单的 where 语句的参数匹配;
全文索引在大量的数据面前,能比 like +%快 N 倍,但是全文索引可能存在精度问题
全文索引的版本、存储引擎、数据类型的支持情况:
. MySQL 5.6以前的版本,只有MyISAM存储引擎支持全文索引;
.MySQL 5.6及以后的版本,MyISAM 和InnoDB 存储引擎均支持全文索引:
只有字段的数据类型为chiar、varchar、text 及其系列才可以建全文索引;
在数据量较大时候,现将数据放入一个没有全局索引的表中,然后再用create index创建fulltext
索引,要比先为一张表建立fulltext然后再将数据写入的速度快很多;
MySQL 中的全文索引,有两个变量,最小搜索长度和最大搜索长度
对于长度小于最小搜索长度和大于最大搜索长度的词语,都不会被索引。
通俗点就是说,想对一个词语使用全文索引搜索,那么这个词语的长度必须在以上两个变量的区间内。这两个的默认值可以使用以下命令查看:
show variables like '%ft%';
添加索引
创建表的适合添加全文索引
create table 表名(
******,
******,
fulltext (content)
);
修改表结构添加全文索引
alter table 表名 add fulltext 索引名(content);
直接添加全文索引
create fulltext index 索引名 on表名 (content);
使用全文索引
select * from 表名 where match ( content ) against ('内容');
注:内容需在最小搜索长度和大于最大搜索长度范围之间