SQL 索引index, create index

sql索引介绍

在表中创建索引,以便更加快速高效地查询数据。用户无法看到索引,它们只能被用来加速搜索/查询。

一个表可以创建多个索引,一个索引可以包含一个或者多个字段。为了提高查询效率,便于后期维护,索引都是基于某种数据结构而创建的,比如 B+ 树、B- 树、位图等。

在表中插入、修改或者删除数据时,数据库引擎也必须维护索引,以保持索引和原始表的同步;也就是说,使用索引是有额外开销的。不适合的索引,或者过多的索引,都会降低插入、修改和删除数据的效率。索引还会占用磁盘空间,增加 I/O 成本,过多的索引甚至会增加碎片。

注释:更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

创建索引的语句:

CREATE INDEX index_name
ON table_name ( column1, column2.....);

index_name 是索引的名字,以后在删除索引时会用到。

索引创建删除实例

以下表为例

CREATE TABLE tdgrep (
    id      INT              NOT NULL   AUTO_INCREMENT,
    name    VARCHAR(20)      NOT NULL,
    url     VARCHAR(30),
    age     TINYINT UNSIGNED NOT NULL,
    alexa   INT UNSIGNED     NOT NULL,
    uv      FLOAT                       DEFAULT '0',
    country CHAR(3)          NOT NULL,
    PRIMARY KEY (`id`)
);

对 name 字段创建索引,用以提高检索姓名时的效率

CREATE INDEX myIndex ON tdgrep(name);

#多了上创建索引
REATE INDEX PIndex ON tdgrep (name, age)

myIndex 是索引的名字。

删除索引 drop index

ALTER TABLE tdgrep DROP INDEX myIndex;