索引 定义及分类

索引
1、索引定义
用于快速找出某个列中拥有的特定值的行。
没索引,查整表(从第一条记录开始查找)
有索引,查索引文件

2、为什么要创建索引 
提高查询效率,经常、习惯、天天都要查这个字段时,为这个字段创建索引。

3、索引存储分类
BTREE/HASH

4、索引优缺点
优点:为查询提速
缺点:越来越大,消耗空间,要维护

5、索引的使用原则
避免过多的使用,经常查询的表的字段和不同值多的字段

索引类型
MyISAM/InnoDB存储引擎,BTREE
InnoDB存储引擎:带有事务。
MyISAM存储引擎:没有事务。

MEMORY/HEAP存储引擎,BTREE/HASH
单列索引、组合索引、全文索引、空间索引
1、单列索引
1、普通索引
为了查询速度快,字段的值可以重复,可以为null
格式:
create table 表名(
  字段名1 字段类型1,
  字段名2 字段类型2,
  ...
  字段名n 字段类型n,
  index/key 索引名(字段名(长度))
);

explain SQL查询
2、唯一索引
为了查询速度快,字段的值是唯一,可以为null

格式:
create table 表名(
  字段名1 字段类型1,
  字段名2 字段类型2,
  ...
  字段名n 字段类型n,
  unique index 索引名(字段名(长度))
);

3、主键索引
是一个特殊的唯一索引,不允许为null
格式:
create table 表名(
  字段名1 字段类型1,
  字段名2 字段类型2,
  ...
  字段名n 字段类型n,
  primary key 索引名(字段名(长度))
);

索引
普通索引:索引字段可重复,可为空
唯一索引:不可重复,可为空
主键索引:不可重复,不可为空

组合索引
多个字段索引,只有左边字段被使用时,索引才会被使用。

格式:
create table 表名(
  字段名1 字段类型1,
  字段名2 字段类型2,
  ...
  字段名n 字段类型n,
  index 索引名(字段名1(长度),字段名2(长度),...字段名n(长度))
);

sid,sname,age   只有查询sid,sname,age/ sid,sname/sid,age/sid才会触发组合索引。

第一步:创建组合索引,名字为index_sid_sname_age
create table stu1(
  sid int,
  sname varchar(20),
  age int,
  sex varchar(2),
  index index_sid_sname_age(sid,sname,age)
);

第二步:什么情况下才会使用组合索引
保证最左前缀,保证查询里面有sid这个字段。

explain select * from stu1 where age=1 and sname='job';  #不能调用组合索引
explain select * from stu1 where sid=1 and sname='job';  #能调用组合索引

2、全文索引
引擎:MyISAM 字段类型:char varchar text 使用函数:match()

格式:
create table 表名(
  字段名1 字段类型1,
  字段名2 字段类型2,
  ...
  字段名n 字段类型n,
  fulltext index 索引名(字段名(长度))
)ENGINE=MyISAM;

3、空间索引
用空间数据类型(点、线、面、几何类型)来建立空间索引。
引擎:MyISAM  列不能为空

格式:
create table 表名(
  字段名1 字段类型1,
  字段名2 字段类型2,
  ...
  字段名n 字段类型n,
  spatial index 索引名(字段名(长度))
)ENGINE = MyISAM;


4、索引操作
创建索引:创建好表后增加索引。

格式:
alter table 数据表名 add [unique|fulltext|spatial] [index|key] [索引名][字段名][asc|desc]

格式:
show index from 数据库表名;

格式一:
alter table 数据库表名 drop index 索引名;

格式二:
drop index 索引名 on 数据库表名;
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值