标签:mysql 索引
一:WHY
由于数据存储在数据库表中,所以索引是创建在数据库表对象上的,由表中的一个字段或多个字段生成的键组成,这些键存储在数据结构(B-树或哈希表)中,通过MYSQL可以快速有效地查找与键值相关联的字段。根据索引的存储类型,可以将索引分为
B型树索引(BTREE)
哈希索引(HASH)
注意:InnoDB 和 MyISAM 存储引擎支持BTREE类型索引,MEMORY存储引擎支持HASH类型索引,默认为前者索引。
二:WHAT
MYSQL支持6种索引:普通索引 唯一索引 全文索引 单列索引 多列索引 空间索引
三:HOW
创建和查看索引
创建表时创建索引
create table table_name(
属性名 数据类型,
...
属性名 数据类型,
index|key 【索引名】(属性名 【(长度)】 【ASC|DESC】) #普通索引
// unique index|key 【索引名】(属性名1 【(长度)】 【(ASC|DESC)】 #唯一索引
/// fulltext index|key 【索引名】(属性名1 【(长度)】 【(ASC|DESC)】 #全文索引
);
create table t_dept(
deptno int,
dname varchar(20),
...
index index_deptno(deptno)
// unique index index_deptno(deptno)
///fulltext index index_loc(loc)
);
show create table t_dept \G;
explain
select * from t_dept where deptno=1\G;
在已经存在的表上创建普通索引
CREATE INDEX 索引名
// create unique index 索引名
ON 表名 (属性名 【(长度)】 【ASC|DESC】)
///...
create index index_deptno
// create unique index index_deptno
on t_dept (deptno);
///...
通过SQL语句ALTER TABLE创建普通索引
ALTER TABLE table_name
ADD INDEX|KEY 索引名(属性名 【(长度)】 【(ASC|DESC)】;
// ADD UNIQUE INDEX|KEY 索引名(属性名 【(长度)】 【(ASC|DESC)】
///...
alter table t_dept
add index index_deptno(deptno);
// add unique index index_deptno(deptno);
///...
创建和查看多列索引
#1:
create table t_dept(
deptno int,
dname varchar(20),
loc varchar(40),
key index_dname_loc(dname,loc)
);
#2:
create index index_dname_loc
on t_dept (dname,loc);
#3:
alter table t_dept
add index index_dname_loc(dname,loc);
删除索引
drop index index_name
on table_name
标签:mysql 索引
原文地址:http://zhouxinzhe.blog.51cto.com/9031522/1691447