Mysql索引
一.索引概述
简单的说,索引就是对某表中一列或若干列值进行排序的结构.它由该表的一列或者多列的值,以及指向这些列对应存储位置的指针构成.
索引是依赖表建立的,一个表有两部分组成:一部分用来存放表的数据页面,另一部分存放索引页面.由于索引页面比数据页面小的多,在进行数据检索时,系统会先搜索索引页面,从中找到所需数据指针,再通过指针从数据页面中读取数据.这种操作模式类似于图书的目录.
索引的作用
1.使用索引可以明显的提高数据查询的速度.
2.通过对多个字段使用唯一索引,可以保证多个字段的唯一性.
3.在表与表之间连接查询时,如果创建了索引,就可以提高表与表之间的连接速度
4.索引的创建,即有利也有弊,在创建索引时需要权衡利和弊
适合被创建索引的情况
1.经常被查询的字段
2.分组字段
3.主键和外键字段.
4.需要设置唯一性约束的字段.
不适和创建索引的情况
1.在查询中很好用到的字段
2.具有重复值的字段
3.较小的数据表,这种情况使用索引并不能改善任何索引性能.
另外,过多的创建索引,还会占用许多的磁盘空间.
索引的操作
1.创建普通索引
普通索引:就是在创建索引时,不附加任何限制条件,如唯一,非空等,这种类型的索引可以创建在任何数据类型的字段上.
Create table 表名
(列名 数据类型....
INDEX|KEY 索引名(列名i[长度][ASC|DESC])
);
2.在已经存在的表上创建普通索引
Create INDEX 索引名
on 表名 (列名[长度][ASC|DESC])
3.通过ALTER TABLE 语句创建普通索引
ALTER TABLE 表名
ADD INDEX|KEY 索引名(列名[长度][ASC|DESC]);
创建唯一索引
唯一索引和普通索引类似,但唯一索引要求索引的值是唯一的,需要使用关键字UNIQUE标明
创建唯一索引与创建普通索引一样也有三种方式.
一.建表时创建唯一索引,语法规则:
Create table 表名
(
列名 数据类,....
UNIQUE INDEX|KEY 索引名 (列名 i [长度][ASC|DESC]);
);
二.是在已经存在的表上创建唯一索引,语法规则:
Create UNIQUE INDEX 索引名
on 表名(列名[长度][ASC|DESC]);
三.通过ALTER TABLE 语句创建唯一索引,语法规则:
ALTER TABLE 表名
ADD UNIQUE INDEX|KEY 索引名(列名[长度][ASC|DESC]);
创建主键索引
ALTER TABLE 表名
ADD PRIMARY KEY(列名);
创建全文索引
在MySQl 中,提供了一种称为全文索引的技术,主要关联在数据类型为CHAR Varchar 和Text 等的长度字符字段上.
1.创建表时创建全文索引
CREATE TABLE 表名
(
列名 数据类型 ,.....
FULLTEXT INDEX|KEY 索引名 (列名i[长度][ASC|DESC])
);
创建全文索引比普通索引多了一个关键字 FULLTEXT
2.在已经存在的表上创建全文索引
3.通过ALTER Table 语句创建全文索引sql
创建多列索引
1.创建表时创建多列索引
CREATE table 表名
(
列名 数据类型 , .....
INDEX|KEY (列名i[长度][ASC|DESC],列名i[长度][ASC0][DESC],.......)
);
2.在已经存在的表上创建多列索引
语法规则:
CREATE INDEX 索引名
on 表名 (列名 1[长度][ASC|DESC],列名 1[长度][ASC|DESC],....);
3.通过ALTER Table 语句创建多列索引
语法规则:
ALTER TABLE 表名
ADD INDEX|KEY 索引名(列名[长度][ASC|DESC],列名[长度][ASC|DESC],......);
删除索引
DROP INDEX 索引名 on 表名;
网友评论