MySQL之索引简介

索引

索引是一个单独的、存储在磁盘上的数据库结构,包含着对数据表里所有记录的引用指针
索引是在存储引擎中实现的
MySQL中索引的存储类型有两种:BTREE和HASH。
MyISAM和InnoDB存储引擎只支持BTREE索引;MEMORY/HEAP可以支持两种


索引分类

1、普通索引和唯一索引
普通索引允许在定义索引的列中插入重复值和空值
唯一索引:索引列的值唯一,但允许有空值。主键索引是一种特殊的唯一索引,不允许有空值
2、单列索引和组合索引
单列索引:一个索引只包含单个列,一个表可以有多个单列索引
组合索引:在表的多个字段组合上创建的索引
3、全文索引:FULLTEXT,允许索引列插入空值或重复值。只有MyISAM存储引擎支持全文索引
4、空间索引:对空间数据类型的字段建立的索引,只能在MyISAM存储引擎中创建。四种类型:GEOMETRY、POINT、LINESTRING、POLYGON


创建索引

1、创建表时创建索引

CREATE TABLE table_name[col_name data_type]
[UNIQUE|FULLTEXT|SPATIAL][INDEX|KEY][index_name](col_name[length])[ASC|DESC]

UNIQUE|FULLTEXT|SPATIAL表示唯一索引、全文索引、空间索引
col_name:需要创建索引的字段列 index_name:指定索引的名称,不指定,默认col_name为索引值

2、在已经存在的表上创建索引
(1)使用ALTER TABLE语句创建索引

[index_name](col_name[length],...)[ASC|DESC]

SHOW INDEX FROM table_name\G各个参数:

Table表示创建索引的表
Non_unique表示索引非唯一,1表示非唯一索引,0代表唯一索引
Key_name表示索引的名称
Seq_in_index表示该字段在索引中的位置,单列索引该值为1,组合索引为定义的顺序
Column_name表示定义索引的列字段
Sub_part表示索引的长度
Null表示字段是否为空值
Index_type表示索引类型

(2)使用CREATE INDEX创建索引

ON table_name(col_name[length],...)[ASC|DESC]

删除索引

1、使用ALTER TABLE删除索引
ALTER TABLE table_name DROP INDEX index_name;
2、DROP INDEX
DROP INDEX index_name ON table_name;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值