索引的分类

1. 唯一索引和普通索引 普通索引是MySQL中的基本索引类型,允许在定义索引的列中插入重复值和空值。 唯一索引,索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。主键索引 是一种特殊的唯一索引,不允许有空值。

2. 单列索引和组合索引 单列索引即一个索引只包含单个列,一个表可以有多个单列索引。 组合索引指在表 的多个字段组合上创建的索引。只有在查询条件中使用了这些字段的左边字段时,索引才会被使用。使 用组合索引时遵循最左前缀集合。

3. 全文索引 fulltext 全文索引类型为FULLTEXT,在定义索引的列上支持值得全文查找,允许在这些索引列 中插入重复值和空值。全文索引可以在CHAR、VARCHAR或者TEXT类型的列上创建。MySQL中只有 MyISAM存储引擎支持全文索引。

4. 空间索引 空间索引是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有4中,分别是: geometry、point、linstring和polygon 。MySQL使用SPATIAL关键字进行扩展,使得能够用于创建空间索 引的列,必须将其声明为NOT NULL,空间索引只能在存储引擎为MyISAM的表中创建。

创建普通索引

语法:create table 表名(字段1 类型,字段2 类型, index(字段1,字段2...));

创建联合唯一索引sql 建立唯一组合索引_搜索引擎

查看表的索引

加\G为了我们更方便的查看。
语法:show create table 表名\G

          show index from 表名\G

          show indexes from  表名\G

         show keys from  表名\G

这里看到KEY后面就是我们添加的所以,KEY后面的ID是这个索引的名字。

用explain 判断索引是否正在被使用

 语法:explain select * from 表名 where 字段=条件\G

创建联合唯一索引sql 建立唯一组合索引_数据库_02

 

创建联合唯一索引sql 建立唯一组合索引_索引_03

 【唯一索引】

创建唯一索引 唯一索引主要原因是减少查询索引列操作的执行时间。尤其是对比比较庞大的数据 表。与普通索引类似,不同点在于:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必 须唯一。

语法:create table 表名(字段1 类型,字段1 类型..,unique  index  起个名字(指定类型));

创建联合唯一索引sql 建立唯一组合索引_数据库_04

【单列索引】

单列索引:是在数据表中的某一字段上创建的索引,一个表中可以创建多个单列索引

语法:create table 表名(字段1 类型,字段1 类型..,index  起个名字(指定类型));

创建联合唯一索引sql 建立唯一组合索引_创建联合唯一索引sql_05

创建联合唯一索引sql 建立唯一组合索引_mysql_06

 【组合索引】 

组合索引:是在多个字段上创建一个索引。遵循最左前缀原则。最左前缀 索引最左边的列来匹配 行 创建

语法:create table 表名(字段1 类型,字段1 类型..,index  起个名字(指定字段1,指定字段2));

【全文索引】

全文索引:FULLTEXT

语法:create table 表名(字段1 类型,字段1 类型....,fulltext  起个名字(指定字段1,指定字段2));

创建联合唯一索引sql 建立唯一组合索引_搜索引擎_07

创建联合唯一索引sql 建立唯一组合索引_索引_08

 【空间索引】

空间索引:且空间类型的字段必须为非空

创建联合唯一索引sql 建立唯一组合索引_搜索引擎_09

 

创建联合唯一索引sql 建立唯一组合索引_数据库_10

 在已经存在的表上创建索引

语法:alter table 表名 add  index 起个名字(指定字段);

创建联合唯一索引sql 建立唯一组合索引_索引_11

创建联合唯一索引sql 建立唯一组合索引_mysql_12

 添加唯一性索引

索引列的值必须唯一,但允许有空值

语法:alter table  表名 add unique index 起个名(指定字段);

创建联合唯一索引sql 建立唯一组合索引_mysql_13

创建联合唯一索引sql 建立唯一组合索引_mysql_14

添加单列索引

语法:alter table   表名 add index 起个名 (指定字段);

创建联合唯一索引sql 建立唯一组合索引_创建联合唯一索引sql_15

创建联合唯一索引sql 建立唯一组合索引_创建联合唯一索引sql_16

 添加全文索引

语法:alter table  表名 add fulltext index  起个名(指定字段);

先创建个表

创建联合唯一索引sql 建立唯一组合索引_搜索引擎_17

创建联合唯一索引sql 建立唯一组合索引_数据库_18

创建联合唯一索引sql 建立唯一组合索引_搜索引擎_19

 

 添加组合索引

alter table  表名 add  index  起个名( 指定字段1,指定字段2);

创建联合唯一索引sql 建立唯一组合索引_搜索引擎_20

 

创建联合唯一索引sql 建立唯一组合索引_索引_21

 添加空间索引

alter table  表名 add SPATIAL index  起个名(指定字段);

创建联合唯一索引sql 建立唯一组合索引_创建联合唯一索引sql_22

 

创建联合唯一索引sql 建立唯一组合索引_索引_23

 

创建联合唯一索引sql 建立唯一组合索引_创建联合唯一索引sql_24

 【删除索引】

语法:alter table 表名 drop index 索引名;

不知道索引名的用这个查看:

          show create table 表名\G

          show index from 表名\G

          show indexes from  表名\G

         show keys from  表名\G

创建联合唯一索引sql 建立唯一组合索引_创建联合唯一索引sql_25

创建联合唯一索引sql 建立唯一组合索引_创建联合唯一索引sql_26

删除全文索引

 

创建联合唯一索引sql 建立唯一组合索引_mysql_27

创建联合唯一索引sql 建立唯一组合索引_搜索引擎_28