mysql索引引擎_mysql搜索引擎和索引那些事

mysql的存储引擎

三种存储方式

**InnoDB **(默认)

一个文件存储表结构,一个存储数据和目录(索引)

# 一个文件 book_name | author| press | price | pub_date frm文件 frame的缩写

# 另一个文件(数据+ 目录)

# | 倚天屠龙记 | egon | 北京工业地雷出版社 | 70.00 | 2019-07-01 |

# | 九阳神功 | alex | 人民音乐不好听出版社 | 5.00 | 2018-07-04 |

# | 降龙十巴掌 | egon | 知识产权没有用出版社 | 20.00 | 2019-07-05 |

# | 葵花宝典 | yuan | 知识产权没有用出版社 | 33.00 | 2019-08-02 |

# | 彭于晏的枕边故事 | 彭于晏 | py26期出版社 | 80.00 | 2020-10-30 |

memory

一个文件存储数据结构,数据存储在内存(差的快,早期都是这种存储方式,现在有redis了)

MyIsam

一个文件表结构,一个存储数据,还有一个放目录(索引)

# 一个文件 book_name | author| press | price | pub_date frm文件 frame的缩写

# 另一个文件(数据)

# 另一个文件(目录)

数据库中数据的存储方式

实际的数据库中数据的存储方式

平衡树 balance tree b-tree

b+树 :能够更好的降低树的高度,并且对范围查询比较友好

myisam/innodb存储引擎 : 索引结构都是通过b+树实现的

每一个字段都可以创建索引

对于一个字段创建的索引在当前字段作为条件的时候可以起到加速作用

索引分两类 :

# 聚集索引(聚簇索引) :数据和索引存在一颗树上

# 辅助索引(非聚集索引/非聚簇索引) :数据和索引不存在一颗树上

你必须要在innodb中的所有表都要主动创建主键,主键就是最好的索引

myisam和innodb在索引上的不同

# myisam中所有的索引都是辅助索引

# innodb中主键是聚集索引,其他都是辅助索引

平衡树

用到平衡树的算法,会算取中间范围,让树不会成为歪脖树。所以每次添加索引需要时间长点,他在构造以索引为主的平衡树

552971c3804558efeac5de8942e12cbc.png

B+树

B+树就是平衡树的升级版,将各个节点也可以链式连接起来,这样查找的时候,(20 between 70)就不用回到起点从新查找。就可以纵向查找了

a8c87dd083f2d7b0d0bc94202b03cc1c.png

索引

索引的优点 : 加速查询效率

索引的缺点 : 拖慢写的速度,占用更多的硬盘(解决办法分布式读写分离)

# create index 索引名 on 表名(字段名);

# create index ind_id on s1(id);

# drop index 索引名 on 表名;

# drop index ind_id on s1;

# 查看

# show create table s1;

正确的使用索引

这里说一下,mysql只能命中一个索引,当你创建多个索引的时候,他在执行语句时,会先走分析器,分析使用什么索引最快,就是平衡树结构更健康。如果你想看mysql分析结果。在查询语句前加上explain

# 1.对哪个字段创建了索引,条件就使用那个字段

# 2.条件列不能参与计算,不能调用函数

# 3.如果列中重复值多,那么不适合创建索引(性别)(1/10)

# 4.尽量不使用范围查询,范围越小效率越高

# 5.使用like 'a%'

# 6.and 相连的多个条件 如果有一个索引都可以被命中

# 7.or 相连的多个条件 必须都有索引才能命中

# 8.联合索引和最左前缀原则(不能使用范围,从使用了范围的那个字段之后的所有条件都无法命中索引,条件之间只能用and不能用or)

# create index mix_ind on s1(id,email,name);

# 可以命中索引

# select * from s1 where id = 2000000 and email='eva2000000@oldboy' and name='eva';

# select * from s1 where id = 2000000 and name='eva';

# select * from s1 where id = 2000000 and email='eva2000000@oldboy';

# select * from s1 where id = 2000000;

# 2000000 eva jingliyang@xxx

# 不能命中索引

# select * from s1 where email='eva2000000@oldboy';

# select * from s1 where name='eva';

# select * from s1 where id = 1000000 and email like 'eva2000000@oldboy';

联合索引就是用多个字段当索引,以主键为第一个(id)开始分大小,id分完按照下一个email开始分,进行排序,形成树

5b42c41ab310229a5a64cd34bda6bc3b.png

索引合并

意思是:创建的时候是2个单独的索引,但是在使用的时候临时合并成一个。

以下是查看mysql分析查看的结果,Mysql把2个独立的索引合并成了一个使用,为了更快捷的查看以下图片中的语句。

028fa122ff1800a16950a1647ad663b4.png

索引覆盖

'Using Index'的意思是“覆盖索引”,它是使上面sql性能提升的关键

一个包含查询所需字段的索引称为“覆盖索引”

MySQL只需要通过索引就可以返回查询所需要的数据,而不必在查到索引之后进行回表操作,减少IO,提高了效率

以下例子

aa1b7f3025878fc1557e771438a5f1a2.png

上图,首先我们要知道。innodb中主键是聚集索引,其他都是辅助索引

加入上表不是以id为主键的表,所以id是辅助索引,当你查询的时候,需要通过id找到主键,在从聚集索引中查找在辅助索引中找到的主键,此时需要回表。

而我查询的只是索引。不需要回表,因为已经查到了。这就是索引覆盖

MySQL只需要通过索引就可以返回查询所需要的数据,而不必在查到索引之后进行回表操作,减少IO,提高了效率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度ip转换器手机版app_房串串经纪人版app下载-房串串经纪人版app手机版 v1.0.0...

房串串经纪人版app:专门为房产经纪人打造的辅助办公软件,提供的功能非常的全面,涵盖了房产服务过程中的各个环节,随时可以手机在线处理自己的日常工作,提高了工作的效率,操作很简单,让你更好的实…

netduino之电源参考电路MC33269DT-5.0G

手里有块netduino的板子,一直闲置未用,netduino具体是什么不知道的就百度吧,我这也不是主要讲netduino开发的,简单说就是用.net开发硬件,了解到netduino也是原来学过C#,当然我主要的工作还是嵌入式硬件开发…

PowerShell使用教程

一、说明 1.1 背景说明 个人对PowerShell也不是很熟悉,开始的时候就突然看到开始菜单中多了个叫PowerShell的文件夹,后来一点就看到某个教程视频说PowerShell很厉害但也没怎么听,再后来就看到kali也有了一些PowerShell的脚本这才意识到PowerS…

python Gunicorn

1. 简介 Gunicorn(Green Unicorn)是给Unix用的WSGI HTTP 服务器,它与不同的web框架是非常兼容的、易安装、轻、速度快。 2. 示例代码1 def app(environ, start_response):data b"Hello World\n"start_response("200 OK", [("Content-Type…

如何使处于不同局域网的计算机实现远程通信_小区自来水二次加压泵站远程监控系统方案...

一、小区自来水二次加压泵站远程监控系统方案项目概述随着城市高效快速地发展,市区规模越来越大,小区二次加压泵房将继续增加,供水公司二次加压泵房管理工作将更加繁重。目前小区二次加压供水方式主要有两种,一种是不锈钢水箱不锈…

postgresql返回行数_怎么优化你的SQL查询?以PostgreSQL为例

实际工作中,我们每个人难免都会要写SQL,执行SQL,但是有时时候执行非常慢,甚至获得不了结果。这时候你会怎么办?放弃?去苦口婆心的求隔壁房间胡子擦擦的猥琐DBA大叔?NO,正确方法是先检…

echarts 词云_python Flask+爬虫制作股票查询、历史数据、股评词云网页

自学python的数据分析,爬虫后,花了几天时间看视频学习Flask做了一个简单的股票查询网页。本来还想着加入一些其他功能,比如财务指标分析,舆情分析,最完美的想法是做成一个股票评分系统,输入股票代码可以自动…

JavaSE基础知识(6)—异常和异常处理

一、异常的理解及体系结构图 1、理解 异常:程序运行过程中发生的不正常现象。java中的错误:   语法错误   运行异常   逻辑错误 2、体系图 java程序在执行过程中所发生的异常分为两类: Error:Java虚拟机无法解决的严重问题。…

peripheralStateNotificationCB

1 /*********************************************************************2 * fn peripheralStateNotificationCB 外围设备 状态 通知 回调函数3 *4 * brief Notification from the profile of a state change. 通知来自于profile的状态改变!5 *6 * …

Jsp2.0自定义标签(第二天)——自定义循环标签

今天是学习自定义标签的第二天&#xff0c;主要是写一个自定义的循环标签。 先看效果图&#xff1a; 前台页面Jsp代码 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <%taglib prefix"myout…

正则表达式以什么开头以什么结尾_股票hk是什么意思,股票st开头是什么意思,新通联股票...

股票hk是什么意思,股票st开头是什么意思,新通联股票股票hk是什么意思,股票st开头是什么意思,新通联股票我们首先解决时间跨度问题&#xff1a;如果您为诸如退休之类的遥远目标投资&#xff0c;则应主要投资股票(同样&#xff0c;我们建议您通过共同基金投资)。心理控制第一&…

电脑显示连接了网络但是不能上网_为什么电脑插上网线显示已连接却上不了网...

尝试断一下网&#xff0c;或者重启一下系统看一下是否解决&#xff1b;也可能是开启了网络代理&#xff0c;可以重置一下浏览器或者网络设置&#xff1b;还可以使用安全管家软件&#xff0c;扫描一下网络设置。以下是详细介绍&#xff1a;1、有时候系统显示已经连接其实并没有真…

python getopterror_python3 getopt用法

python channel_builder.py -s /Users/graypn/ -d /Users/graypn/Documents -m 7 --outreport/xx.html参数也分长格式和短格式短格式&#xff1a;-s长格式&#xff1a;--sourceopts, args getopt.getopt(sys.argv[1:], "hs:d:m:v:p:c:",["help", "sr…

excel删除空行_Excel里99.9%的人都踩过的坑,早看早避开!

本文作者丨可可&#xff08;小 E 背后的小仙女&#xff09;本文由「秋叶 Excel」原创发布如需转载&#xff0c;请在公众号发送关键词「转载」查看说明2019 年上班第一天感觉怎么样呢&#xff1f;望着满屏幕铺天盖地的表格&#xff0c;我只能摸摸自己还没下去的小肚子&#xff0…

CentOS 6.5 Zabbix-agent3.2 安装 1.0版

1.关闭防火墙service iptables stop2.更换源、安装zabbix-agentrpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/6/x86_64/zabbix-release-3.2-1.el6.noarch.rpmyum install -y zabbix-agent3.修改配置文件vim /etc/zabbix/zabbix_agentd.confServer192.168.8.228 ser…

centos下利用httpd搭建http服务器方法

centos下利用httpd搭建http服务器方法 1. 解决的问题 在开发测试过程中&#xff0c;分析图片任务需要将图片保存在服务器端&#xff0c;通过url来访问和下载该图片&#xff0c;这就需要使用一台图片服务器&#xff0c;但常常遇到图片服务器匮乏的情况&#xff0c;为了解决该问题…

[转]Java7中的ForkJoin并发框架初探(上)——需求背景和设计原理

详见&#xff1a; http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp83 这篇我们来简要了解一下JavaSE7中提供的一个新特性 —— Fork Join 框架。 0. 处理器发展和需求背景 回想一下并发开发的初衷&#xff0c;其实可以说是有两点&#xff0c;或者说可以从两个方面…

安装oculus运行时出现问题_U盘安装windows10出现的问题解决方法

安装windows10 出现的问题之前安装windows10都没什么问题&#xff0c;今天安装windows10出现了好多问题&#xff0c;记录一下。我这个教程我觉得是最好的安装教程安装windows10教程问题1. 我们无法创建新的分区&#xff0c;找不到现有分区&#xff08;或者因为MBR分区表问题&am…

python选择排序从大到小_Python实现选择排序

一、选择排序简介选择排序(Selection sort)是一种简单直观的排序算法。选择排序首先从待排序列表中找到最小(大)的元素&#xff0c;存放到元素列表的起始位置(与起始位置进行交换)&#xff0c;作为已排序序列&#xff0c;第一轮排序完成。然后&#xff0c;继续从未排序序列中找…

java句柄数过高怎么解决_主播个人及企业利润高,个税或企业所得税怎么解决...

网络直播在2020年尤为火热&#xff0c;男女老少都纷纷投入其中&#xff0c;究其原因还是其行业表现出来的“利润高”等。也确实有部分人取得了一定的成效&#xff0c;也催生了不少的直播平台、经纪公司的出现。 那么这些主播个人或者企业利润高&#xff0c;个税或企业所得…