数据库索引特性

索引特性

索引:提高数据库的性能,索引是物美价廉的东西,不用加内存,不用改程序,不用调sql,只要执行正确的create index,查询速度就可能提高成百上千倍,但是这是有代价的,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的IO,所以他的价值,在于提高一个海量数据的检索速度。
常见索引分为:
1.主键索引
2.唯一索引
3.普通索引
4.全文索引—解决中子文索引问题
案例分析
先整一个还量表,在查询的时候,看看是否有索引有什么问题?
数据库索引特性_第1张图片
数据库索引特性_第2张图片
在这里插入图片描述
数据库索引特性_第3张图片

基本原理

数据库索引特性_第4张图片

创建索引

创建主键索引
第一种方式

create table user1(id int primary key,name varchar(30));

第二种方式

create table user2(id int,name varchar(30),primary key(id));

第三种方式

create table user3(id int,name varchar(30));
alter table user3 add primary key(id);

主键索引的特点:
1.一个表中,最多有一个主键索引,当然可以使符合主键
2.主键索引的效率高(主键不可重复)
3.创建主键索引的列,它的值不能为null,且不能重复
4.主键索引的列基本是int

唯一索引的创建

第一种方式

在表定义时,在某列后直接指定unique唯一属性
create table user4(id int primary key,name varchar(30) unique);

第二种方式

创建表时,在表的后面指定某列或某几列为unique
create table user5(id int primary key,name varchar(30),unique(name));

第三种方式

create table user6(id int primary key,name varchar(30));
alter table user6 and unique(name);

唯一索引的特点
1.一个表中,可以有多个唯一索引
2.查询效率高
3.如果某 一列建立 唯一索引,必须保证这列不能有重复数据
4.如果一个唯一索引上指定not null 等价于主键索引
普通索引的创建
第一种方式

create table user8(id int primary key,
	name varchar(20),
	email varchar(30),
	index(name)
	);---在表的定义最后,指定某列为索引

第二种方式

create table user9(id int primary key,name varchar(20),email varchar(30));
alter table user9 add index(name);--创建完表以后指定某列为普通索引

第三种方式

create table user10(id int primary key,name varchar(20),email varchar(30));
--创建一个索引名为idx_name的索引
create index idx_name on user10(name);

全文索引的创建
当对文章段或有大量文字的字段进行检索时,会使用到全文索引,MySQL提供全文索引机制,但是有要求,要求表的存储引擎必须是MyISAM,而且默认的全文索引支持英文,不支持中文,如果对中文进行全文检索,可以使用sphinx的中文版(coreseek)
数据库索引特性_第5张图片

查询索引

第一种方法:

show keys from 表名

第二种方法

show index from 表名

第三种方法

desc 表名

删除索引

第一种方法–删除主键索引:

alter table 表名 drop primary key;

第二种方法–其他索引的删除:

alter table表名 drop index 索引名;索引名就是show keys from 表名中的key_name 字段

第三种方法:drop index 索引名 on 表名

drop index name on user8;

索引创建原则
1.比较频繁作为查询条件的字段应该创建索引
2.唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
3.更新非常频繁的字段不适合作创建索引
4.不会出现在where子句中的字段不该创建索引

你可能感兴趣的:(数据库)