数mysql据分析优化_从零开始学习数据分析-mysql架构与优化理论

mysql的逻辑分层:连接层 服务层 引擎层 存储层

引擎层主要分为两类:InnoDB、MyIsam(使用show engines;查看)

InnoDB是事务优先的,会进行行锁,适合高并发操作

MyIsam是性能优先的,进行表锁

sql优化点:等待时间长,执行时间长,性能低下,多表连接查询,服务器参数设置不合理(线程数、缓冲区)

编写过程 select ... from ... join... on ... where ... group by ... having... order by...

解析过程 from ... on ... join... where ...group by... having...select... order by...

具体内容可以看步步深入:MySQL架构总览->查询执行流程->SQL解析顺序 - AnnsShadoW - 博客园​www.cnblogs.com5615782072ee3534d1ab67bb78cc028e.png

sql优化主要是优化索引,索引是一个高效查询数据的数据结构,索引一般是一颗树(树:b树或者hash树等)示例如下。

索引的弊端也是有的:索引本身需要空间可以存放内存或者硬盘内部;索引在有的情况下不适用:数据量少,频繁更新的数据,很少使用的字段,索引会提高查询但是减低增删改效率(但是数据库的大部分操作是查询,增删改较少)。

优势:提高查询效率(降低IO使用率)、降低CPU使用率(...order by xx desc,直接在B树排好了)。

B树在磁盘中的结构是怎么样的呢?

三层Btree可以存放上百万条数据,每一层可以超过两个分支。B树一般是值B+树,数据全部放到叶节点中,B+树中查询任意数据都是n次(n为树的高度)。

B树与B+树的区别,可以看以下文章https://blog.csdn.net/login_sonata/article/details/75268075​blog.csdn.net

索引的分类:单值索引(单列,一个表可以有多个单值索引)、唯一索引(不能重复)、复合索引(多个列构成的索引,符合索引不一定是多个列全中)。

第一种

# 单值索引 create 索引类型 索引名 on 表(字段)

create index dept_index on tb(dept);

# 唯一索引

create unique index name_index on tb(name);

# 复合索引

create index dept_name_index on tb(dept, name);

第二种

# alter table 表名 索引类型 索引名(字段)

# 单值索引

alter table tb add index dept_index(dept);

# 唯一索引

alter table tb add unique index name_index(name);

# 符合索引

alter table tb add index dept_name_index(dept, name);

事务操作只对DML增删改有效,DDL会自动提交。

主键索引是唯一索引的一种,但是主键索引不能为null。

删除索引

drop index 索引名 on 表名

drop index name_index on tb;

SQL优化问题

1、分析SQL的执行计划:explain。可以模拟SQL优化器优化SQL执行语句。

2、mysql查询自动优化,会干扰优化。

explain一般返回这么几个字段:id,select_type,type

不过SQL执行计划不同版本不一样,看具体版本,不用纠结。

这里用explain返回结果时,id越大越先执行(本质是嵌套查询),id相同时,顺序执行。

select_type:primary(主查询)、subquery(子查询)、simple(简单查询,不包含子查询和union)、derived(衍生查询,用到了临时表。在from子查询中只有一张表,或者union前一个查询)

type:索引类型

一般system > const > eq_ref > ref > range > index > all性能依次降低,实际能达到ref > range即可。前提是必须建立索引。

这个理解即可。

eq_ref:查询结果1v1;ref:查询结果1vN(N>=0);range(where between,<=, >=,in等),其中in在查询数据在一半以上时,退化为all或index。尽量避免使用in;index:查某一索引字段的;all:全表所有字段或者没有索引的字段。

下期讲索引优化方案。

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

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

相关文章

检验int值在list中是否存在_R语言统计与绘图:卡方检验

卡方检验在计数资料中的应用&#xff0c;包括推断两个总体率或构成比之间有无差别、多个总体率或构成比之间有无差别、多个样本率间的多重比较、两个分类变量之间有无关联性、多维列联表的分析和频数分布拟合优度的卡方检验。选自&#xff1a;周支瑞老师下面分别介绍计数资料怎…

mysql in 多个字段_MySQL如何同时自增自减多个字段

“本文将带大家聊一下如何同时自增自减多个字段”前言最近小Q同学去面试了&#xff0c;然后就问了题目的问题&#xff0c;如何同时自增自减多个字段。小Q一时回答不出来&#xff0c;最终的结果就是回家等通知....关于这个问题咔咔来给小Q简单的进行解答一下。一、ThinkPHP框架实…

wxpython 调用子窗口_wxpython入门第一步(简单例子)

在这部分wxPython教程中&#xff0c;我们将创建一些简单的例子。简单的例子​ 我们从一个非常简单的例子开始。我们的第一个脚本将只显示一个小窗口。它不会做太多事情。我们将逐行分析这个脚本。# simple.pyimport wxapp wx.App()frame wx.Frame(None, )frame.Show()app.Mai…

orderd mysql_Oracle入门教程:leading vs ordered hint

odered hint 可以指示oracle 使用from 关键字后面的表的顺序进行join连接&#xff01;cbo会优先按照from 后面的表的顺序来进行join&#xff0c;当统计leading hint 可以指示Oracle使用leading 中指定的表作为驱动表,比如 正常的访问计划如下SCOTT> select e.ename, hiredat…

mysql标识列从一开始_mysql中标识列是什么意思有什么用

标识列是什么&#xff1f;标识列又称为自增长列。含义&#xff1a;可以不用手动的插入值&#xff0c;系统提供默认的序列值特点&#xff1a;1、标识列必须和主键搭配吗&#xff1f;不一定&#xff0c;但要求是一个key2、一个表可以有几个标识列&#xff1f;至多一个&#xff01…

mysql 及时点还原_mysqlbinglog基于即时点还原

mysqlbinlog介绍要想从二进制日志恢复数据&#xff0c;你需要知道当前二进制日志文件的路径和文件名。一般可以从选项文件(即my.cnf or my.ini&#xff0c;取决于你的系统)中找到路径。(mysql5.7开启binglog 时需要同时设置server-id否则无法启动)要想确定当前的二进制日志文件…

python mysql查表_python进阶(十、mysql:单表查询)

3.mysql数据库3.10 单表查询3.10.1. 简单查询查询在数据库中使用的频率是最高的&#xff1a;十次查询&#xff0c;一次增删改。1)建表2)插入数据3.10.1.1. 选择字段&#xff1a;selectselect 字段名1,字段名2…… from 表名 where 条件;3.10.1.2. 字段重命名(别名)&#xff1a;…

python常见的数值运算符_第18 p,Python中各种常用的运算符,特别是增量运算符...

原标题&#xff1a;第18 p&#xff0c;Python中各种常用的运算符&#xff0c;特别是增量运算符大家好&#xff0c;我是杨数Tos&#xff0c;这是《从零基础到大神》系列课程的第18篇文章&#xff0c;第二阶段的课程&#xff1a;Python基础知识&#xff1a;Python中各种常用的运算…

python画害羞的表情_用Python把你的朋友变成表情包

一、项目说明在日常生活中&#xff0c;我们经常会存取一些朋友们的丑照&#xff0c;在这个项目中&#xff0c;我们以萌萌哒的熊猫头作为背景&#xff0c;然后试着在背景图上加入朋友们的照片。效果如下图所示&#xff1a;二、实现步骤导入朋友的照片(前景照片)&#xff1b;处理…

.net md5 java 偏移量_C# java MD5加密方不一致问题

说来惭愧&#xff0c;做开发几年了&#xff0c;一直在吸取&#xff0c;今天也写写自已关于技术的一点点理解&#xff0c;不正之处&#xff0c;请大家多多指点。由于之前开发的项目使用的是C#,用户信息使用的C#的MD5加密码方式&#xff0c;而现在需要切换到Java平台下&#xff0…

java dijkstra算法代码_[转载]Java实现dijkstra算法: 地图中任意起点寻找最佳路径...

最近在复习java&#xff0c;下学期要用&#xff0c;写这个练手. 技术较粗糙&#xff0c;见谅.代码里用的是这幅地图&#xff0c;根据实际情况更改&#xff0c;在addNode方法中这个是运行结果&#xff0c;起点和终点在 运行wrap(String qidian, String zhongdian) 时定义代码&a…

java xml opencv_Java中使用opencv

零、前言作为图像处理出身&#xff0c;不仅仅要会C图像处理、matlab图像处理、python图像处理、最起码也得会java图像处理&#xff0c;当然我最终还都用的是opencv这个机器视觉库了。今天简单介绍一下java中如何使用opencv。一、配置库(1)官网下载opencv&#xff0c;在opencv\b…

java实现table可编辑_动态渲染可编辑单元格的Table

一、问题描述问题是这样的&#xff0c;后台传了xArr [x1, x2,...,xn]和yArr [y1, y2, ..yn]两个数组&#xff0c;前端要渲染出表格并且可以填写每个单元格的值&#xff0c;然后按照一定数据结构保存并传给后台&#xff0c;并且再次获取这个数据结构和数组xArr、yArr可以自己渲…

java包裹邮费计算_GitHub - honghailiang/FreightSystem: 基于Java Swing编写的简易运费计算工具...

FreightSystem基于java Swing编写的运费计算系统初始化数据从excel中读取数据&#xff0c;转化为对象(只保存基础数据&#xff1a;序列号、始发站、目的站、省份、100kg以下(元/kg)、100kg以上(元/kg)、到货(元/kg)、自提(元/kg)、补贴里程、公路里程、单价(元/吨公里))并保存到…

java需求设计_JavaWeb期末设计---需求分析文档. stage1

影院活动管理系统—需求分析文档目录第2章 需求分析2.1 用户需求2.1.1 业务需求2.1.2 商业需求2.1.3 特殊需求2.2 可行性分析2.2.1 技术可行性2.2.2 经济可行性2.3 系统功能2.3.1 功能概述2.3.2 E-R图2.3.4 Domian logic2.3.5 系统框架图-------------------------------------…

selenium java po模式_selenium + java po模式

po模式大概介绍&#xff0c;大家也可以自己百度看看Page Object模式主要是将每个页面设计为一个类class&#xff0c;这个类包含页面中需要测试的元素(按钮、输入框、URL、标题等)和实际操作方法&#xff0c;这样在写测试用例时可以通过调用页面类的方法和属性来获取页面元素和操…

java基础语法实例教程_Java 基础语法

一个 Java 程序可以认为是一系列对象的集合&#xff0c;而这些对象通过调用彼此的方法来协同工作面向对象中的一些概念下表列出了 面向对象 编程中的一些概念名词说明对象对象是类的一个实例&#xff0c;有状态和行为。例如&#xff0c;一条狗是一个对象&#xff0c;它的状态有…

python3软件怎么使用_python3怎么使用pip

pip 是 Python 包管理工具&#xff0c;该工具提供了对Python 包的查找、下载、安装、卸载的功能。目前如果你在 python.org 下载最新版本的安装包&#xff0c;则是已经自带了该工具。Python 2.7.9 或 Python 3.4 以上版本都自带 pip 工具。pip 官网&#xff1a;https://pypi.o…

深度学习图像融合_基于深度学习的图像超分辨率最新进展与趋势【附PDF】

因PDF资源在微信公众号关注公众号&#xff1a;人工智能前沿讲习回复“超分辨”获取文章PDF1、主题简介图像超分辨率是计算机视觉和图像处理领域一个非常重要的研究问题&#xff0c;在医疗图像分析、生物特征识别、视频监控与安全等实际场景中有着广泛的应用。随着深度学习技术的…

高通cpu排行_安卓手机芯片排行:麒麟990 5G仅排第三,980还输给了765G?

众所周知&#xff0c;在移动端芯片行业&#xff0c;高通多年来都保持着一种舍我其谁的劲头&#xff0c;但随着科技的不断发展&#xff0c;其他厂商也开辟了自己的新天地&#xff0c;截至目前&#xff0c;全球主流的智能手机搭载的处理器主要来自于华为海思、高通骁龙、三星、联…