关于Mysql底层索引以及搜索引擎

什么是索引?

索引就是一个DB提高效率查询

为什么要使用索引?

第一, 通过创建唯一索引,可以确定数据的唯一性
第二, 所以可以大大的加快检索的速度,

索引的分类?

主要分为四大类:
a).单列索引:
普通索引:就是为了查询更加快点
唯一索引:列中的值都是唯一的,但是可以为null
主键索引:列不能为null,比如说主键索引
b).组合索引:在表中多个列上创建的索引,只有查询条件使用了最左边的字段时,索引才能被使用。比如说有id,name,age三个列,如果使用的是name或者age ,name 这个索引就不会被使用。
c).全文索引:只有在MySIAM引擎上才能够发挥作用,只有字段的类型是CHAR,VARCHAR,TEXT的时候才会被使用。 (全文索引就相当于模糊查询),切记,一定不要使用 %like %
d).空间索引:空间索引是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有四种,GEOMETRY、POINT、LINESTRING、POLYGON。

索引的创建语法?

create table aaa
(id int unsigned primary key auto_increment ,
name varchar(32) not null default '');

索引的优缺点?

好处:
a).通过创建唯一索引,可以保证数据库每一行数据的唯一性。
b).可以大大的加快检索的速度
c).在使用分组和排序的时候,能大大的减少查询时间
不利的因素:
a).创建和维护索引比较消耗时间,索引会根据表空间的增加而增加
b).索引占物理空间,数据量越大,空间所占的物理空间就越大
c).当对表的进行增,删,改的时候,索引也要动态的维护,这样就降低了维护的速度。
创建索引需要注意的情况:
a).在经常搜索的列上创建索引
b).主键上创建唯一索引,不仅可以加快速度查询,而且可以确保数据唯一性
c).对表中数据很少的不要创建索引
d).对于一些数值比较少的不需要创建索引,比如说text,image …
e).一定不要是频繁更新的列

Mysql底层最常用的索引?

1.MySIAM(Mysql默认的引擎)  2.InnoDB   3.Memory   4.CSV  5.Archive 
6.Blakhole   7.Mrg_Mysiam

Mysql底层常用索引之间的区别以及联系?

 a).MYSIAM 是Mysql默认的引擎,它不支持事务,也不支持行级锁和外键(就是当执行Insert和Update的时候会将整个表锁定,所以导致效率变低)。MYSIAM在查询count的时候,他会有一个专门存储的地方,他平常一般都是CURD的时候,读的比较多。

如图:为MySIAM实现机制
在这里插入图片描述

 b).InnoDB是对数据库ACID提供了支持,并且对行级锁和外键支持。他们的设计目标就是处理大容量的数据,InnoDB不支持全文的检索,启动比较慢,它不会保存行数。所以,查询count的时候,需要全表扫描,效率比较慢。如果需要使用事务的时候,该引擎是首选。<br/>

在这里插入图片描述

由于锁的力度非常小,所以在写表操作的时候,不会锁表,所以对并发度较高的场景下效率还是很高的。

两种引擎的差别以及什么时候使用?

	a).大数据的时候还是建议InnoDB引擎,他支持事务的处理,InnoDB也能够利用日志回复数据,还有就是主键的查询InnoDB非常快的。大批量的插入操作MYISAM执行的效率高点,InnoDB在Update的时候效率要比MySIAM效率高点。

	b)MySIAM引擎:
		在Mysql的生成目录会有MYI,MYD,frm文件。他是这样根据索引查数据的。结构中存储的内容实际上是地址值,这种索引称为非聚集索引

	c).InnoDB引擎:
		在mysql生成目录只有frm,idb文件,他是这样查找数据的,他的数据结构中存储的都是实际的数据,所以被称为聚集索引。
如图:两种之间的区别

在这里插入图片描述

更多关于Mysql索引:
https://blog.csdn.net/gitchat/article/details/78787837

MySql创建索引
https://www.cnblogs.com/sweet521/p/6203360.html

文章来源网络,版权归作者本人所有,如侵犯到原作者权益,请与我们联系删除或授权事宜
如果有误,请联系作者更改,谢谢,本人微信:void666666

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值