一、特点
数据量较大时,使用select查询会很慢,需要建立索引提升速度,是高效的查询数据的数据结构
二、索引的分类
1、根据应用层次:
唯一索引、主键索引、普通索引、全文索引
2、根据数据结构:
B+树索引、哈希索引、全文索引
3、根据物理存储:
聚集索引、非聚集索引
4、根据字段个数:
单列索引、联合索引
三、常见的索引
1、普通索引(INDEX)
最基本的索引类型,基于普通字段建立的索引,没有任何限制
创建索引 CREATE INDEX <索引名> ON tablename (字段名); 修改表结构(添加索引) ALTER TABLE tablename ADD INDEX [索引名] (字段名); 创建表的时候直接指定 CREATE TABLE tablename( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) ); 删除索引的语法 DROP INDEX [索引名] ON mytable; 其它索引的创建修改删除同理,只是索引字段不同
2、唯一索引(UNIQUE)
一张表可以有多个唯一索引,但是索引值必须唯一,允许为空,列值中出现多个空值不会发生重复冲突,在创建或修改表时设置主键约束,
CREATE UNIQUE INDEX <索引名> ON tablename (字段名); ALTER TABLE tablename ADD UNIQUE INDEX [索引的名字] (字段名); CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (字段名)) ;
3、主键索引(PRIMARY KEY)
索引值必须唯一,且不允许有空值,每个表只能有一个主键,在创建或修改表时设置主键约束
CREATE TABLE tablename ( [...], PRIMARY KEY (字段名) ); ALTER TABLE tablename ADD PRIMARY KEY (字段名);
4、全文索引(FULLTEXT)
全文索引是将存储在数据库中的大段文本中的任意内容信息查找出来的技术。
CREATE FULLTEXT INDEX 索引名 on 表名 (column_name);
ALTER TABLE table_name ADD FULLTEXT INDEX 索引名(column_name);ALTER TABLE table_name DROP INDEX 索引名;
全文索引要结合match 和 against 关键字 使用
select * from user where match(name) against('aaa');
5、联合索引(复合索引、组合索引)
也叫复合索引、组合索引,是包含了多列的索引,在MySQL中使用联合索引时要遵循最左前缀匹配原则,当表的行数远大于索引列的数目时可以使用复合索引
CREATE INDEX <索引的名字> ON tablename (字段名1,字段名2...); ALTER TABLE tablename ADD INDEX [索引的名字] (字段名1,字段名2...); CREATE TABLE tablename ( [...], INDEX [索引的名字] (字段名1,字段名2...) );
—————————————————— end ——————————————————————
不足之处,欢迎补充 ~