优点:可以提高检索数据的速度。
缺点:创建和维护索引需要耗费时间,即会影响增加、删除和修改记录的速度;需要占用物理空间。
索引分类:
1.普通索引:可以创建在任何数据类型中,其值是否唯一和非空由字段本身的完整性约束条件决定。
2.唯一性索引:使用unique参数设置索引为唯一性索引。限制该索引的值必须是唯一的。主键是一种特殊唯一性索引。
3.全文索引:使用fulltext参数设置索引为全文索引。全文索引只能创建在char、varchar或text类型的字段上。只有MyISAM存储引擎支持全文索引。默认搜索执行方式不区分大小写,但索引的列使用二进制排序后,可以执行区分大小写的全文索引。
4.单列索引:在表中的单个字段上创建索引。
5.多列索引:在表的多个字段上创建一个索引。
6.空间索引:使用spatial参数设置索引为空间索引。空间索引只能建立在空间数据类型上。MySQL中的空间数据类型包括geometry和point、linestring和polygon等。只有MyISAM存储引擎支持空间索引,而且索引的字段不能为空。
索引设计原则:
1.选择唯一性索引
2.为经常需要排序、分组和联合操作的字段建立索引
3.为常作为查询条件的字段建立索引
4.限制索引的数目
5.尽量使用数据量少的索引
6.尽量使用前缀来索引
7.删除不再使用或者很少使用的索引
创建索引:
1.创建表的时候创建索引
create table 表名(属性名 数据类型[完整性约束条件],
属性名 数据类型[完整性约束条件],
……
属性名 数据类型
[unique|fulltext|spatial] index|key [别名](属性名1 [(长度)] [asc|desc])
);
(1).创建普通索引
create table index1(id int,name varchar(20),sex boolean,index(id));
(2).创建唯一性索引
create table index2(id int unique,name varchar(20),unique index index2_id(id asc));
(3).创建全文索引
create table index3(id int,info varchar(30),fulltext index index3_info(info))engine=myisam;
(4).创建单列索引
create table index4(id int,subject varchar(30),index index4_st(subject(10)));
(5).创建多列索引
create table index5(id int,name varchar(20),sex char(4),index index5_ns(name,sex));
(6).创建空间索引
create table index6(id int,space geometry not null,spatial index index6_sp(space))engine=myisam;
2.在已经存在的表上创建索引
create [unique|fulltext|spatial] index 索引名 on 表名 (属性名 [(长度)] [asc|desc]);
(1).创建普通索引
create index index7_id on example0(id);
(2).创建唯一性索引
create unique index index8_id on index8(course_id);
(3).创建全文索引
create fulltext index index8_info on index9(info);
(4).创建单列索引
create index index10_addr on index10(address(4));
(5).创建多列索引
create index index11_na on index11(name,address);
(6).创建空间索引
create spatial index index12_line on index12(line);
3.用alter table语句来创建索引
alter table 表名 add [unique|fulltext|spatial] index 索引名(属性名[(长度)] [asc|desc]);
(1).创建普通索引
alter table example0 add index index12_name(name(20));
(2).创建唯一性索引
alter table index14 add unique index index14_id(course_id);
(3).创建全文索引
alter table index15 add fulltext index index15_info(info);
(4).创建单列索引
alter table index16 add index index16_addr(address(4));
(5).创建多列索引
alter table index17 add index index17_na(name,address);
(6).创建空间索引
alter table index18 add spatial index index18_line(line);
删除索引
mysql 全文索引 mysql全文索引的缺点
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
MySQL全文索引源码剖析之Insert语句执行过程
全文索引是信息检索领域的一种常用的技术手段,用于全文搜索问题。
全文索引 mysql MySQL Insert语句