索引
索引
对数据库表中一列或者多列的值进行排序的结构,提供查询效率
分类
1.普通索引
不需要添加任何条件,可以创建任何数据类型,由字段本身的完整性约束决定
2.唯一索引
使用unique参数进行设置,该值必须是唯一的。(主键是一种特殊的唯一索引)
3.全文索引
使用gfulltext参数进行设置,只能创建在char,varchar或者text类型的字段上(适用于查询数据量较大的字符串类型的字符时)
4.单列索引
在表中单个字段上创建,只能根据该字段进行索引查询,只要保证该索引只对应一个字段即可
5.多列索引
在表中多个字段上创建,可通过多个字段进行索引查询(注意:只有查询条件中使用了这些字段中的第一个字段时,索引才会被使用)
例如:id name age,查询条件使用了id 字段时该索引才会被使用
6.空间索引
使用spatial 参数进行设置,只能建立在空间数据类型上。(geometry,point,linestring,polygong..)
设计原则
1.选择唯一索引
唯一索引的值是唯一的,可快速通过该索引来确定某条记录
例如:人---IDcard
2.为经常需要排序,分组,联合操作的字段建立索引频繁使用group by,order by,distinct ,union 来操作字段时
3.经常作为查询条件的字段建立索引
4.限制索引的数目
选择合适最好,不求多,只求合适
5.尽量使用数据量少的索引
varchar(10) varchar(255) 选前者
6.尽量使用前缀来索引
检索值很长时,如:text,blog,只检索前面的若干个字符
7.不使用或使用频率低的,应尽快删除
Build
1.创建表时创建索引
syntax:create table tablename(属性名 数据类型 [完整性约束条件],[unique|fulltext|spatial]index|key[别名](属性名)1[(长度)[asc|desc]] )
1.1
create table index(
id int,
name varchar(20),
sex boolean,
index (id)
);
1.2 唯一索引
create table index2(
id int,
name varchar(20),
unique index index2_id(id asc));
)
1.3 全文索引(innoDB 不支持 ,MyISAM支持)
create table index3(
id int,
info varchar(20),
fulltext index index3_info(info asc)
);
1.4 创建单列索引
.....index(id).......
1.5 创建多列索引
.....index(id,name)......
1.6 创建空间索引
create table index4(
id int,
space geometry not null,
spatial index index4_sp(space)
)engine = MyISAM;
2.在已存在表中创建索引
语法:
create [unique|fulltext|spatial] index 索引名 on tablename(属性名|[长度][asc|desc]);
2.1创建普通索引
create index index5_id on example1(id);
3.alter table 语句创建索引
syntax:alter table tablename add[unique|fulltext|spatial] index 索引名 (属性名[(长度)][asc|desc]);
3.1 普通
例子:alter table example add index index8(stu_name(20))
3.2 创建唯一索引
.....add unique index........
3.3 全文索引
.......add fulltext index....(数据类型需是char|varchar|text类型)
3.4 单列索引
.....add index(id)..........
3.5 多列索引
.....add index(id,name).......
3.6 空间索引
...add spatial index ......
(innoDB不支持全文索引,MyISAM引擎支持,数据类型需支持空间数据类型)
删除索引
syntax:drop index 索引名 on tablename (及时删除索引,释放内存)

浙公网安备 33010602011771号