標籤: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 索引的操作