索引
索引分类:
- 单列索引:一个索引只包含单个列
- 普通索引:没有限制
- 唯一索引:索引列中的值必须是惟一的,允许空值
- 主键索引:特殊唯一索引,不允许有空值
- 组合索引:
- 全文索引:只有 MyISAMM 引擎才能使用。只能在字符串字段上使用
- 空间索引
索引可以提高查询速度,但会降低写入速度。
普通索引
// 直接创建普通索引
create index 索引名 on 表名(字段名);
CREATE [UNIQUE|FULLTEXT|SPATIAL] [INDEX|KEY] 索引名称 ON 表名(创建索引的字段名[length])[ASC|DESC]
// 修改表结构添加索引
alter table 表名 add index 索引名(字段名);
ALTER TABLE 表名 ADD[UNIQUE|FULLTEXT|SPATIAL] [INDEX|KEY] [索引名] (索引字段名)[ASC|DESC]
ALTER TABLE book ADD INDEX BkNameIdx(bookname(30));
// 创建表时直接指定索引
create table table_name(
id int not noll,
username varchar(16) not null,
index(username),
index [indexname](username(length))
);
// 删除索引
drop index [indexname] on 表名;
alter table 表名 drop index c;
唯一索引
索引列的值必须唯一,允许有空值。
// 直接创建
create unique index 索引名 on 表名(username(length));
// 修改表结构创建
alter table 表名 add unique [索引名] (列名(length));
ALTER TABLE 表名 ADD[UNIQUE|FULLTEXT|SPATIAL] [INDEX|KEY] [索引名] (索引字段名)[ASC|DESC]
ALTER TABLE book ADD INDEX BkNameIdx(bookname(30));
// 创建表时直接指定
create table table_name(
id int not null,
username varchar(16),
unique index uniqudx(id), # 设定了索引名
unique [indexnaem] (username(length))
);
组合索引
CREATE TABLE t3(
id INT NOT NULL,
name CHAR(30) NOT NULL,
age INT NOT NULL,
info VARCHAR(255),
INDEX MultiIdx(id,name,age)
);
全文索引
全文索引可以用于全文搜索,但只有MyISAM存储引擎支持FULLTEXT索引,并且只为CHAR、VARCHAR和TEXT列服务。索引总是对整个列进行,不支持前缀索引。
CREATE TABLE t4(
id INT NOT NULL,
name CHAR(30) NOT NULL,
age INT NOT NULL,
info VARCHAR(255),
FULLTEXT INDEX FullTxtIdx(info)
)ENGINE=MyISAM;
SELECT * FROM t4 WHERE match(info) against('gorlr');
查看索引
show index from 表名;
删除索引
alter table 表名 drop index 索引名;
drop index 索引名 on 表名;
查询语句前面添加 EXPLAIN 指定使用索引查询。

浙公网安备 33010602011771号