索引

2019-04-06  本文已影响0人  夜阑w

索引(Index)是帮助MySQL高效获取数据的数据结构,即索引是数据结构。MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

一、索引的用法

1. 创建索引

普通索引

这是最基本的索引类型,而且它没有唯一性之类的限制,通常有三种方式可以创建:

CREATE INDEX indexName ON table_name(column_name(length)); 
ALTER table table_name ADD INDEX index_name(column_name);
CREATE TABLE table_name(
ID INT NOT NULL,
...
INDEX [index_name] (column_name(length))
);
唯一索引

它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。创建唯一索引有三种方法:

CREATE UNIQUE INDEX indexName ON table_name(column_name(length)); 
ALTER table table_name ADD UNIQUE index_name(column_name);
CREATE TABLE table_name(
ID INT NOT NULL,
...
UNIQUE [index_name] (column_name(length))
);
主键索引

主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”,每个表只能有一个主键,通常是自增的ID,大部分在创建表的时候指定。它不能用CREATE INDEX语句创建,共有两种创建方式。

CREATE TABLE table_name(
ID INT NOT NULL,
...
PRIMARY KEY (column_name(length))
);
ALTER table table_name ADD PRIMARY KEY (column_name);

主键索引由于每个表中只有一个,所以不需要指定索引名。主键可用自动生成,比如INT字段,可以用AUTO_INCREMENT来自动生成。

2. 删除索引

DROP INDEX index_name ON table_name;
ALTER TABLE table_name DROP INDEX index_name;
ALTER TABLE table_name DROP PRIMARY KEY;

3. 查看索引

SHOW INDEX FROM table_name;

二、索引的利弊权衡

1. 索引的好处

2. 索引的弊端

确实,索引能够极大地提高数据检索效率,也能够改善排序分组操作的性能,但有不能忽略的一个问题就是索引是完全独立于基础数据之外的一部分数据。

如果创建了索引,则MySQL在更新表的同时,都需要更新索引数据,调整因为更新带来键值变化的索引信息。而如果没有创建索引,MySQL要做的仅仅是更新表中的信息。这样,最明显的资源消耗就是增加了更新所带来的 IO 量和调整索引所致的计算量。此外,索引需要占用存储空间,而且随着表中数据量的增加,索引所占用的空间也会不断增加,所以索引还会带来存储空间资源消耗的增加。

3. 索引的选择

上一篇 下一篇

猜你喜欢

热点阅读