> 文章列表 > MySQL索引分类

MySQL索引分类

MySQL索引分类

  1. 主键索引:设定为主键后数据库会自动建立索引,innodb为聚簇索引

  2. 单值索引:即一个索引只包含单个列,一个表可以有多个单列索引

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

  4. 复合索引:即一个索引包含多个列

CREATE TABLE customer (id INT (10) UNSIGNED AUTO_INCREMENT,customer_no VARCHAR (200),customer_name VARCHAR (200),PRIMARY KEY (id), # 主键索引KEY idx_name (customer_name), # 单值索引UNIQUE KEY uk_name (customer_name), # 唯一索引KEY idx_no_name (customer_no, customer_name) # 复合索引
);

1. 单独建索引

(1)使用CREATE语句

CREATE  [UNIQUE ]  INDEX [indexName] ON table_name(column))

CREATE INDEX idx_customer_name ON customer(customer_name);  # 单值索引
CREATE UNIQUE INDEX idx_customer_no ON customer(customer_no); # 唯一索引
CREATE INDEX idx_no_name ON customer(customer_no,customer_name); # 复合索引

(2)使用ALTER命令

该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。

ALTER TABLE tbl_name ADD PRIMARY KEY (column_list);

这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。

ALTER TABLE tbl_name ADD UNIQUE index_name (column_list);

添加普通索引,索引值可出现多次。

ALTER TABLE tbl_name ADD INDEX index_name (column_list); 

该语句指定了索引为 FULLTEXT ,用于全文索引。

ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list);

2. 删除索引

DROP INDEX [indexName] ON mytable;

(1)删除主键索引

ALTER TABLE customer drop PRIMARY KEY;

(2)删除单值、唯一、复合索引

DROP INDEX idx_customer_name  on customer; 

3. 查看索引

SHOW INDEX FROM table_name\\G;

4. 修改主键索引

必须先删除掉(drop)原索引,再新建(add)索引