@MySQL语法之 Indexes

2017-07-30  本文已影响11人  seyvoue

原始链接: http://www.seyvoue.com/posts/b1ae4170/

用来加快查询的技术很多,其中最重要的是索引。通常索引能够快速提高查询速度。如果不适用索引,MYSQL必须从第一条记录开始然后读完整个表直到找出相关的行。表越大,花费的时间越多。但也不全是这样。本文讨论 在 MySQL 中如何创建、删除、重命名索引。


文章目录

[TOC]


创建索引

在执行 CREATE TABLE 语句时可以创建索引,也可以单独用 CREATE INDEXALTER TABLE 来为表增加索引。

例1 CREATE TABLE: 在创建表时就创建索引

CREATE TABLE contacts
( 
    contact_id INT(11) NOT NULL AUTO_INCREMENT,
    last_name VARCHAR(30) NOT NULL,
    first_name VARCHAR(25),
    birthday DATE,
    CONSTRAINT contacts_pk PRIMARY KEY (contact_id),
    INDEX contacts_idx (last_name, first_name)
);

例2 CREATE INDEX: 创建完表后,单独创建索引

CREATE TABLE contacts
( 
    contact_id INT(11) NOT NULL AUTO_INCREMENT,
    last_name VARCHAR(30) NOT NULL,
    first_name VARCHAR(25),
    birthday DATE,
    CONSTRAINT contacts_pk PRIMARY KEY (contact_id)
);

CREATE INDEX contacts_idx ON contacts (last_name, first_name);

例3 ALTER TABLE: 创建完表后,添加索引

CREATE TABLE contacts
( 
    contact_id INT(11) NOT NULL AUTO_INCREMENT,
    last_name VARCHAR(30) NOT NULL,
    first_name VARCHAR(25),
    birthday DATE,
    CONSTRAINT contacts_pk PRIMARY KEY (contact_id)
);

ALTER TABLE contacts ADD INDEX contacts_idx (last_name, first_name)

删除索引

可利用 ALTER TABLEDROP INDEX 语句来删除索引。类似于 CREATE INDEX 语句,DROP INDEX 可以在 ALTER TABLE 内部作为一条语句处理。

例1 DROP INDEX

DROP INDEX contacts_idx ON contacts;

例2 ALTER TABLE 中使用 DROP INDEX 语句

ALTER TABLE contacts DROP INDEX contacts_idx 

重命名索引

MySQL5.6及其之前的版本,重命名索引,需要先删除之前的索引

ALTER TABLE contacts
    DROP INDEX contacts_idx,
    ADD INDEX contacts_new_index (last_name, first_name);

MySQL5.7及其之后的版本,使用关键字 RENAME 关键字即可重命名索引

ALTER TABLE contacts
    RENAME INDEX contacts_idx TO contacts_new_index;
上一篇 下一篇

猜你喜欢

热点阅读