数据库学习之让索引加快查询速度(四)

数据库学习之让索引加快查询速度

 

 

 

目录

索引简介

MySQL的索引分类

创建索引

添加与删除索引

 

 

 

索引简介

 

 

索引在MySQL中也叫做"键",是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。
索引优化应该是查询优化最有效的手段了。
索引能够轻易将查询性能提高好几个数量级。
索引相当于字典的音序表,如果要查某个字,如果要查某个字,如果不使用音序表,则需要从几百页中逐页去查。
索引特点:创建与维护索引会消耗很多时间与磁盘空间,但查询速度大大提高。
索引的功能就是加速查找
mysql中的primary keyunique联合唯一也都是索引,这些索引除了加速查找以外,还有约束的功能。

 

 

MySQL的索引分类

 

 

索引分类
1.普通索引index :加速查找
2.唯一索引
    主键索引:primary key :加速查找+约束(不为空且唯一)
    唯一索引:unique:加速查找+约束 (唯一)
3.联合索引(多列索引)
    -primary key(id,name):联合主键索引
    -unique(id,name):联合唯一索引
    -index(id,name):联合普通索引
4.全文索引fulltext :用于搜索很长一篇文章的时候,效果最好。
5.空间索引spatial :了解就好,几乎不用

  

 

 

 

创建索引

 

 

 创建索引的语法

      CREATE TABLE 表名 (
                字段名1  数据类型 [完整性约束条件…],
                字段名2  数据类型 [完整性约束条件…],
                [UNIQUE | FULLTEXT | SPATIAL ]   INDEX | KEY
                [索引名]  (字段名[(长度)]  [ASC |DESC]) 
                );


  

 

 创建表时创建索引

创建 普通索引示例:
CREATE TABLE emp1(
	id INT,
	name VARCHAR(20),
	resume VARCHAR(50),
	INDEX index_emp_name (name)
);




创建唯一索引示例:
CREATE TABLE emp2(
	id INT,
	name VARCHAR(30),
	bank_num CHAR(10),
	resume VARCHAR(50),
	UNIOUE INDEX index_emp_name (name)
);



创建 全文索引示例:
CREATE TABLE emp3(
	id INT,
	name VARCHAR(30),
	resume VARCHAR(50),
	FULLTEXT INDEX index_name_resume (resume)
);


创建多列索引示例:
CREATE TABLE emp4(
	id INT,
	name VARCHAR(30),
	resume VARCHAR(50),
	INDEX index_name_resume (name,resume)
);

  

 

 

添加与删除索引

 

 

添加索引的语法

CREATE 在已存在的表上创建索引
CREATE [UNIOUE | FULLTEXT  |  SPATIAL]  INDDX  索引名 ON 表名 [字段名(长度)]  [ASC | DESC];


ALTER TABLE 在已存在的表上创建索引
ALTER TABLE 表名  ADD [UNIOUE | FULLTEXT  |  SPATIAL]  INDDX 索引名 [字段名(长度)]  [ASC | DESC];

  

添加索引的例子

CREATE INDEX index_emp_name on emp1(name); #创建普通索引
ALTER TABLE emp2 ADD UNIOUE INDEX index_emp_name(name) #创建唯一索引
alter table emp2 add primary key(id); #添加住建索引,也就是给id字段增加一个主键约束
create index index_emp_name on emp5(id,name); #添加普通联合索引

  

 

删除索引语法

语法:DROP INDEX 索引名 on 表名;

  

删除索引的例子

DROP INDEX index_emp_name on emp1; #删除普通索引
DROP INDEX index_emp_name on emp2; #删除唯一索引,就和普通索引一样,不用在index前加unique来删,直接就可以删了
alter table s1 drop primary key; #删除主键(因为它添加的时候是按照alter来增加的,那么我们也用alter来删)

  

 


举个例子来说,比如你在为某商场做一个会员卡的系统。

这个系统有一个会员表
有下列字段:
会员编号 INT
会员姓名 VARCHAR(10)
会员身份证号码 VARCHAR(18)
会员电话 VARCHAR(10)
会员住址 VARCHAR(50)
会员备注信息 TEXT

那么这个 会员编号,作为主键,使用 PRIMARY
会员姓名 如果要建索引的话,那么就是普通的 INDEX
会员身份证号码 如果要建索引的话,那么可以选择 UNIQUE (唯一的,不允许重复)

#除此之外还有全文索引,即FULLTEXT
会员备注信息 , 如果需要建索引的话,可以选择全文搜索。
用于搜索很长一篇文章的时候,效果最好。
用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。
但其实对于全文搜索,我们并不会使用MySQL自带的该索引,而是会选择第三方软件如Sphinx,专门来做全文搜索。

#其他的如空间索引SPATIAL,了解即可,几乎不用

  

转载于:https://www.cnblogs.com/-wenli/p/10380528.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值