Mysql优化的基本思路和原则

MYSQL—查询优化的基本思路和原则 一、常用优化的原则 永远用小结果集驱动大结果集 尽可能在索引中完成排序 只取出自己需要的列 仅仅使用最有效的过滤条件 尽可能避免复杂的join和子查询 多使用profile 1. 在这里需要严格的说是小结果集驱动大结果集,而不能用人们通常所说的小表驱动大表。因为在where条件过滤后大表数据未必就比小表多,反而适得其反。因为在mysql的join中是通过嵌套循环来实现的,驱动结果集越大,所需要循环的次数就越多。跟就会导致被驱动表的访问次数增多,即使需要的IO很少但是次数多了总量影响也不可能很小更会导致CPU运算量跟着增加。所以在优化Join SQL时最基本的原则就是小结果集驱动大结果集。通过这 立即下载
  在分析如何优化MySQL Query 之前,我们需要先了解一下Query 语句优化的基本思路和原则。一 般来说,Query 语句的优化思路和原则主要提现在以下几个方面:     
1. 优化更需要优化的Query;     
2. 定位优化对象的性能瓶颈;     
3. 明确的优化目标;     
4. 从Explain 入手;     
5. 多使用profile     
6. 永远用小结果集驱动大的结果集;     
7. 尽可能在索引中完成排序;     
8. 只取出自己需要的Columns;     
9. 仅仅使用最有效的过滤条件;     
10. 尽可能避免复杂的Join 和子查询;   
上面所列的几点信息,前面4 点可以理解为Query 优化的一个基本思路,后面部分则是我们优化中
的基本原则。
下面我们先针对Query 优化的基本思路做一些简单的分析,理解为什么我们的Query 优化到底该
如何进行。
优化更需要优化的Query
为什么我们需要优化更需要优化的Query?这个地球人都知道的“并不能成为问题的问题”我想就并不需要我过多解释吧,哈哈。

那什么样的Query 是更需要优化呢?

对于这个问题我们需要从对整个系统的影响来考虑。什么Query 的优化能给系统整体带来更大的收益,就更需要优化。一般来说,高并发低消耗(相对)的Query 对整个系统的影响远比低并发高消耗的Query 大。我们可以通过以下一个非常简单的案例分析来充分说明问题。

假设有一个Query 每小时执行10000 次,每次需要20 个IO。另外一个Query 每小时执行10 次,每次需要20000 个IO。我们先通过IO 消耗方面来分析。可以看出,两个Query 每小时所消耗的IO 总数目是一样的,都是200000 IO/小时。假设我们优化第一个Query,从20 个IO 降低到18 个IO,也就是仅仅降低了2 个IO,则我们节省了2 * 10000 = 20000 (IO/小时)。而如果希望通过优化第二个Query 达到相同的效果,

我们必须要让每个Query 减少20000 / 10 = 2000 IO。我想大家都会相信让第一个Query 节省2 个IO远比第二个Query 节省2000 个IO 来的容易。其次,如果通过CPU 方面消耗的比较,原理和上面的完全一样。只要让第一个Query 稍微节省一小块资源,就可以让整个系统节省出一大块资源,尤其是在排序,分组这些对CPU 消耗比较多的操作中尤其突出。

最后,我们从对整个系统的影响来分析。一个频繁执行的高并发Query 的危险性比一个低并发的Query 要大很多。当一个低并发的Query 走错执行计划,所带来的影响主要只是该Query 的请求者的体验会变差,对整体系统的影响并不会特别的突出,之少还属于可控范围。但是,如果我们一个高并发的Query 走错了执行计划,那所带来的后可很可能就是灾难性的,很多时候可能连自救的机会都不给你就会让整个系统Crash 掉。曾经我就遇到这样一个案例,系统中一个并发度较高的Query 语句走错执行计划,系统顷刻间Crash,甚至我都还没有反应过来是怎么回事。

当重新启动数据库提供服务后,系统负载立刻直线飙升,甚至都来不及登录数据库查看当时有哪些Active 的线程在执行哪些Query。如果是遇到一个并发并不太高的Query 走错执行计划,至少我们还可以控制整个系统不至于系统被直接压跨,甚至连问题根源都难以抓到。

定位优化对象的性能瓶颈

当我们拿到一条需要优化的Query 之后,

第一件事情是什么?是反问自己,这条Query 有什么问题?我为什么要优化他?

只有明白了这些问题,我们才知道我们需要做什么,才能够找到问题的关键。而不能就只是觉得某个Query 好像有点慢,需要优化一下,然后就开始一个一个优化方法去轮番尝试。这样很可能整个优化过程会消耗大量的人力和时间成本,甚至可能到最后还是得不到一个好的优化结果。这就像看病一样,医生必须要清楚的知道我们病的根源才能对症下药。如果只是知道我们什么地方不舒服,然后就开始通过各种药物尝试治疗,那这样所带来的后果可能就非常严重了。

所以,在拿到一条需要优化的Query 之后,我们首先要判断出这个Query 的瓶颈到底是IO 还是CPU。

到底是因为在数据访问消耗了太多的时间,还是在数据的运算(如分组排序等)方面花费了太多资源?

一般来说,在MySQL 5.0 系列版本中,我们可以通过系统自带的PROFILING 功能很清楚的找出一个Query 的瓶颈所在。当然,如果读者朋友为了使用MySQL 的某些在5.1 版本中才有的新特性(如Partition,EVENT 等)亦或者是比较喜欢尝试新事务而早早使用的MySQL 5.1 的预发布版本,可能就没办法使用这个功能了,因为该功能在MySQL5.1 系列刚开始的版本中并不支持,不过让人非常兴奋的是该功能在最新出来的MySQL 5.1 正式版(5.1.30)又已经提供了。而如果读者朋友正在使用的MySQL 是
4.x 版本,那可能就只能通过自行分析Query 的各个执行步骤,找到性能损失最大的地方。


明确的优化目标

当我们定为到了一条Query 的性能瓶颈之后,就需要通过分析该Query 所完成的功能和Query 对系统的整体影响制订出一个明确的优化目标。没有一个明确的目标,优化过程将是一个漫无目的而且低效的过程,也很难达收到一个理想的效果。尤其是对于一些实现应用中较为重要功能点的Query 更是如此。


如何设定优化目标?

这可能是很多人都非常头疼的问题,对于我自己也一样。要设定一个合理的优化目标,不能过于理想也不能放任自由,确实是一件非常头疼的事情。

一般来说,我们首先需要清楚的了解数据库目前的整体状态,同时也要清楚的知道数据库中与该Query 相关的数据库对象的各种信息,而且还要了解该Query 在整个应用系统中所实现的功能。

了解了数据库整体状态,我们就能知道数据库所能承受的最大压力,也就清楚了我们能够接受的最悲观情况。把握了该Query 相关数据库对象的信

息,我们就应该知道实现该Query 的消耗最理想情况下需要消耗多少资源,最糟糕又需要消耗多少资源。

最后,通过该Query 所实现的功能点在整个应用系统中的重要地位,我们可以大概的分析出该Query 可以占用的系统资源比例,而且我们也能够知道该Query 的效率给客户带来的体验影响到底有多大。

当我们清楚了这些信息之后,我们基本可以得出该Query 应该满足的一个性能范围是怎样的,这也就是我们的优化目标范围,然后就是通过寻找相应的优化手段来解决问题了。如果该Query 实现的应用系统功能比较重要,我们就必须让目标更偏向于理想值一些,即使在其他某些方面作出一些让步与牺牲,比如调整schema 设计,调整索引组成等,可能都是需要的。而如果该Query 所实现的是一些并不是太关键的功能,那我们可以让目标更偏向悲观值一些,而尽量保证其他更重要的Query 的性能。

这种时候,即使需要调整商业需求,减少功能实现,也不得不应该作出让步。

从Explain 入手

现在,优化目标也已经明确了,自然是奥开始动手的时候了。我们的优化到底该从何处入手呢?

答案只有一个,从Explain 开始入手。为什么?因为只有Explain 才能告诉你,这个Query 在数据库中是以一个什么样的执行计划来实现的。

但是,有一点我们必须清楚,Explain 只是用来获取一个Query 在当前状态的数据库中的执行计划,在优化动手之前,我们比需要根据优化目标在自己头脑中有一个清晰的目标执行计划。只有这样,优化的目标才有意义。

一个优秀的SQL 调优人员(或者成为SQL performance Tuner),在优化任何一个SQL 语句之前,都应该在自己头脑中已经先有一个预定的执行计划,然后通过不断的调整尝试,再借助Explain 来验证调整的结果是否满足自己预定的执行计划。对于不符合预期的执行计划需要不断分析Query 的写法和数据库对象的信息,继续调整尝试,直至得到预期的结果。

当然,人无完人,并不一定每次自己预设的执行计划都肯定是最优的,在不断调整测试的过程中,如果发现MySQL Optimizer 所选择的执行计划的实际执行效果确实比自己预设的要好,我们当然还是应该选择使用MySQL optimizer 所生成的执行计划。


上面的这个优化思路,只是给大家指了一个优化的基本方向,实际操作还需要读者朋友不断的结合具体应用场景不断的测试实践来体会。当然也并不一定所有的情况都非要严格遵循这样一个思路,规则是死的,人是活的,只有更合理的方法,没有最合理的规则。

在了解了上面这些优化的基本思路之后,我们再来看看优化的几个基本原则。

永远用小结果集驱动大的结果集很多人喜欢在优化SQL 的时候说用小表驱动大表,个人认为这样的说法不太严谨。

为什么?因为大表经过WHERE 条件过滤之后所返回的结果集并不一定就比小表所返回的结果集大,可能反而更小。在这种情况下如果仍然采用小表驱动大表,就会得到相反的性能效果。其实这样的结果也非常容易理解,在MySQL 中的Join,只有Nested Loop 一种Join 方式,也就是MySQL 的Join 都是通过嵌套循环来实现的。驱动结果集越大,所需要循环的此时就越多,那么被驱动表的访问次数自然也就越多,而每次访问被驱动表,即使需要的逻辑IO 很少,循环次数多了,总量自然也不可能很小,而且每次循环都不能避免的需要消耗CPU ,所以CPU 运算量也会跟着增加。

   所以,如果我们仅仅以表的大小来作为驱动表的判断依据,假若小表过滤后所剩下的结果集比大表多很多,结果就是需要的嵌套循环中带来更多的循环次数,反之,所需要的循环次数就会更少,总体IO 量和CPU 运算量也会少。而且,就算是非Nested Loop 的Join 算法,如Oracle 中的Hash Join,同样是小结果集驱动大的结果集是最优的选择。所以,在优化Join Query 的时候,最基本的原则就是“小结果集驱动大结果集”,通过这个原则来减少嵌套循环中的循环次数,达到减少IO 总量以及CPU 运算的次数。

尽可能在索引中完成排序只取出自己需要的Columns任何时候在Query 中都只取出自己需要的Columns,尤其是在需要排序的Query 中。

为什么?对于任何Query,返回的数据都是需要通过网络数据包传回给客户端,如果取出的Column 越多,需要传输的数据量自然会越大,不论是从网络带宽方面考虑还是从网络传输的缓冲区来看,都是一个浪费。

如果是需要排序的Query 来说,影响就更大了。在MySQL 中存在两种排序算法,

一种是在MySQL4.1 之前的老算法,实现方式是先将需要排序的字段和可以直接定位到相关行数据的指针信息取出,然后在我们所设定的排序区(通过参数sort_buffer_size 设定)中进行排序,完成排序之后再次通过行指针信息取出所需要的Columns,也就是说这种算法需要访问两次数据。

第二种排序算法是从MySQL4.1 版本开始使用的改进算法,一次性将所需要的Columns 全部取出,在排序区中进行排序后直接将数据返回给请求客户端。改行算法只需要访问一次数据,减少了大量的随机IO,极大的提高了带有排序的Query 语句的效率。但是,这种改进后的排序算法需要一次性取出并缓存的数据比第一种算法要多很多,如果我们将并不需要的Columns 也取出来,就会极大的浪费排序过程所需要的内存。

在MySQL4.1 之后的版本中,我们可以通过设置max_length_for_sort_data 参数大小来控制MySQL 选择第一种排序算法还是第二种排序算法。当所取出的Columns 的单条记录总大小

max_length_for_sort_data 设置的大小的时候,MySQL 就会选择使用第一种排序算法,反之,则会选择第二种优化后的算法。为了尽可能提高排序性能,我们自然是更希望使用第二种排序算法,所以在Query 中仅仅取出我们所需要的Columns 是非常有必要的。仅仅使用最有效的过滤条件很多人在优化Query 语句的时候很容易进入一个误区,那就是觉得WHERE 子句中的过滤条件越多越好,实际上这并不是一个非常正确的选择。其实我们分析Query 语句的性能优劣最关键的就是要让他选择一条最佳的数据访问路径,如何做到通过访问最少的数据量完成自己的任务

一文读懂GAN, pix2pix, CycleGAN和pix2pixHD 本文翻译、总结自朱俊伟的线上报告,主要讲了如何用机器学习生成图片。 来源:Games2018 Webinar 64期 :Siggraph 2018优秀博士论文报告 人员信息 主讲嘉宾 姓名:朱俊彦(Jun-Yan Zhu) 现状:麻省理工学院博士后(PostDoc at MIT),计算机科学与人工智能实验室(Computer Science and Artificial In... 阅读详情

相关推荐

STM32F103新手必看:0.96寸OLED屏幕从接线到动态显示全攻略(附IIC避坑指南)

本文为STM32F103新手提供了0.96寸OLED屏幕从硬件接线到软件驱动的完整实战指南。重点解析了IIC通信的时序、设备地址(0x78/0x7A)的常见陷阱,并详细演示了如何实现字符显示与平滑滚动显示等动态效果,帮助开发者快速上手并避开常见调试难题。

stone的博客 555

Mysql优化思路

MYSQL优化主要分为以下四大方面: 设计:存储引擎,字段类型,范式与逆范式 功能:索引,缓存,分区分表。 架构:主从复制,读写分离,负载均衡。 合理SQL:测试,经验。 一、存储引擎 在创建表的时候我们使用sql语句,Create table tableName () engine=myisam|innodb; 这里就指明了存储引擎是myisam还是innodb。存储引擎是一种用来存储MySQL中对象(记录和索引)的一种特定的结构(文件结构),处于MySQL服务器的最底层,直接存储数据。导致

MrLee的博客 1003

threejs加载3dtiles(倾斜摄影)数据

1、安装3dTilesRenderer 插件 使用npm 安装 npm install 3d-tiles-renderer --save 或者去官网下载都行 GitHub - NASA-AMMOS/3DTilesRendererJS: Renderer for 3D Tiles in Javascript using three.js 2、使用 首先引入,在填入3dtiles数据的地址,可以是文件路径也可以是网站路径 const tilesRenderer = new TilesRend..

weixin_39481659的博客 1万+

MySQL 常见的 9 种优化方法

设想一下,要把某个数据同时插入两个相关联的表中,可能会出现这样的情况:第一个表中成功更新后,数据库突然出现意外状况,造成第二个表中的操作没有完成,这样就会造成数据的不完整,甚至会破坏数据库中的数据。例如:在定义邮政编码这个字段时,如果将其设置为char(255),显然给数据库增加了不必要的空间,甚至使用varchar这种类型也是多余的,因为char(6)就可以很好地完成了任务。尽管事务是维护数据库完整性的一个非常好的方法,但却因为他的独占性,有时会影响数据库的性能,尤其是很大的应用系统中。

程序员高级码农的博客 4102

【突变检验方法一】MATLAB实现Pettitt突变检验

MATLAB实现Pettitt突变检验及贝叶斯突变检测等

WW、forever的博客 1万+

034、MLCA 多尺度局部上下文注意力的 YOLOv11 适配:轻量级金字塔式空间上下文聚合

本文介绍了一种将多尺度局部上下文注意力(MLCA)模块集成到YOLOv11模型中的方法,以解决小目标检测中空间信息丢失的问题。MLCA采用金字塔式局部上下文聚合策略,通过不重叠的网格划分实现轻量级空间注意力计算,相比全局注意力机制能更好地保留小目标特征。 作者详细记录了实现过程,包括模块定义、参数调优和训练技巧,特别指出避免使用BN而改用GroupNorm以提升训练稳定性。在VisDrone数据集上的实验表明,MLCA-YOLOv11在参数量和计算量基本不变的情况下,mAP提升2.5%,其中行人检测提升3.

sundong_81的博客 279

最全MySQL优化方法,手把手教你学会性能优化

水平分,主要是为了解决存储的瓶颈;垂直分,主要是为了减轻并发压力。

2301_76571514的博客 1396

【人工智能】大模型可以分为L0层:基础大模型/通用大模型、L1层:行业大模型、L2层:细分场景模型三个层级

大模型确实可以分为L0、L1、L2三个层级,这种分层架构不仅有助于提升模型的泛化能力和适应性,还能更好地满足不同行业和场景的需求。华为盘古大模型的分层架构(L0、L1、L2)在多个证据中得到了详细描述和验证。例如,华为云盘古大模型3.0明确分为L0基础大模型、L1行业大模型和L2场景模型三层架构。此外,其他来源也一致支持这一分层架构,如用友网络的企业服务大模型、智谱AI的GLM-4系列等。

奶爸的编程之路,也就一周冷个三天 3983

【八万字总结】MySQL性能优化

MySQL性能优化,包括库表结构、索引、查询、硬件、服务器以及架构六个方面的优化内容。

Tony.Dong的专栏 2127

复现论文《孤岛微电网环境下基于物理模型引导的深度强化学习VSG频率控制方法》

本文提出了一种结合物理模型与深度强化学习的孤岛微电网VSG频率控制方法。通过建立VSG小信号模型并设计可变系数控制器,将物理知识融入深度强化学习框架,解决了高维参数和机组耦合带来的控制难题。复现代码实现了三个核心组件:VSGSmallSignalModel建模VSG动态特性,VariableCoefficientController实现参数自适应调节,PhysicsGuidedDRL整合DQN算法与物理模型引导的奖励机制。该方法通过模型驱动与数据驱动的优势互补,提升了频率控制性能,其中物理模型既作为先验知识

huanghm88的专栏 127

ESP32网络开发实例-开发环境搭建

NodeMCU-ESP-32S开发环境搭建 NodeMCU-32S 最强的ESP32 开发板非盗版或副厂的CH340。WiFi 蓝牙ESP-32 可用Arduino IDE ESP32-S 是一款通用型WiFi-BT-BLE MCU模组,功能强大,用途广泛,可以用于低功耗传感器网络和要求极高的任务,例如语音编码、音频流和MP3解码等。 此款模组的核心是ESP32芯片,具有可扩展、自适应的特点。两个CPU核可以被单独控制或上电。时钟频率的调节范围为80 MHz到240 MHz。用户可以切断CPU的电源,利用低

视觉与物联智能 3781

MySQL的常用优化方案

我们知道, MySQL DB 的数据是存放在磁盘上的,其读写速度无法和存放在内存中的 redis 相比,当 MySQL 记录数过大时,增删改查时系统的吞吐量会非常的大,数据增删改查的性能会急剧下降。为了改善以上情况,我们需要对 MySQL 进行相关优化,可以参考以下步骤来优化:

ch98000的博客 1662

CorelDraw插件开发-Cdr插件-CPG插件-GMS插件-安装位置

文章目录1.gms格式插件2.cpg格式插件3.作者答疑   CorelDraw软件是一款使用非常广泛的矢量图形软件,系统本身提供了非常便利的二次开发环境,制作插件的格式有两种,一种是gms格式的脚本插件,另外一种是cpg格式dll插件。 1.gms格式插件   gms格式插件是使用微软的 VBA 技术,编写和调试都比较方便,从9的版本开始支持。   安装:把gms文件复制到程序所安装的目录 gms 下,一般在C:\Program Files\Corel\CorelDRAW Graphics Suite 1

插件开发 2753

MySQL Query 的优化—Query 语句优化基本思路和原则

Query优化、思路和原则

男儿当自强 1161

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

mysql中Query语句优化基本思路和原则

参考:https://phpmianshi.com/?id=151 基本思路和原则 在分析如何优化 MySQL Query 之前,我们需要先了解一下 Query 语句优化的基本思路和原则。一般来说,Query 语句的优化思路和原则主要体现在以下几个方面: 1. 优化更需要优化的 Query; 2. 定位优化对象的性能瓶颈; 3. 明确的优化目标; 4. 从 Explain 入手; 5. 多使用 profile 6. 永远用小结果集驱动大的结果集; 7. 尽可能在索...

tiancityycf的专栏 305

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

读《MySQL性能调优与架构设计》笔记之Query语句优化基本思路和原则

在分析如何优化MySQLQuery 之前,我们需要先了解一下Query 语句优化的基本思路和原则。一般来说,Query 语句的优化思路和原则主要提现在以下几个方面:         1. 优化更需要优化的Query;         2. 定位优化对象的性能瓶颈;         3. 明确的优化目标;         4. 从Explain 入手;         5. 多使用pro

lihuayong的专栏 1267

MYSQL---查询优化的基本思路和原则

一、常用优化的原则 永远用小结果集驱动大结果集 尽可能在索引中完成排序 只取出自己需要的列 仅仅使用最有效的过滤条件 尽可能避免复杂的join和子查询 多使用profile 1.在这里需要严格的说是小结果集驱动大结果集,而不能用人们通常所说的小表驱动大表。因为在where条件过滤后大表数据未必就比小表多,反而适得其反。因为在mysql的join中是通过嵌套循环来实现的,驱动结果集越大,所需要循...

池海 1663

MySQL 性能优化之查询优化

如今互联网行业用的最多就是 MySQL,不管项目大小都会用到它,然而 MySQL 其实玩的就是优化和架构设计。 本场 Chat 首先会带领大家畅聊 MySQL 性能优化之查询优化,了解 MySQL 之查询优化有那些,并且后期运用在项目中。本场 Chat 您将学到如下内容: 了解查询优化器模块; 了解查询优化的基本思路; 了解查询的基本原则; 了解索引利弊及索引分类; 了解索引相关优化。 ...

GitChat 1073

MySQL性能优化

MySQL性能优化

nnUyi的博客 362

MySql调优(三)Query SQL优化(1)语句优化

1、delete from 删除语句加where条件,如果是删除全部记录,使用truncate table 表名,而不使用delete语句; 2、尽量只查询单表,不做连接查询,需要连接查询,可以分解成多次单表查询; 3、少用in查询,in查询的范围不要太大; 4、少用group by语句。如果使用了group by,消除group by的无谓排序:在group by ..后面加上 orde...............

w_t_y_y的博客 507

mysql性能优化-查询(Query)优化-1

前言 在之前“影响MySQL 应用系统性能的相关因素”一章中我们就已经分析过了Query 语句对数据库性能的影响非常大,所以本章将专门针对MySQL 的Query 语句的优化进行相应的分析。 8.1 理解MySQL的Query Optimizer 8.1.1 MySQL Query Optimizer是什么? 在“MySQL 架构组成”一章中的“MySQL 逻辑组成”一节中

clh604的专栏 6743

MySql(八):MySQL性能调优——Query 的优化

一、理解MySQL的Query Optimizer MySQL Optimizer是一个专门负责优化SELECT 语句的优化器模块,它主要的功能就是通过计算分析系统中收集的各种统计信息,为客户端请求的Query 给出他认为最优的执行计划,也就是他认为最优的数据检索方式。 二、Query 语句优化基本思路和原则 在分析如何优化MySQL Query 之前,我们需要先了解一下Query 语句优化的基本...

weixin_33716941的博客 212

mysql 5.7 驱动_6个知识点轻松掌握MySQL性能调优

前言文章将阐述 MySQL 查询优化相关的东西,了解查询优化器、查询优化的基本思路、查询的基本原则、索引相关的优化。一、查询优化器模块查询优化器的任务是发现执行 SQL 查询的最佳方案。大多数查询优化器,要么基于规则、要么基于成本。大多数查询优化器,包含 MySQL 的查询优化器,总或多或少地在所有可能的查询评估方案中搜索最佳方案。MySQL 中 MySQL Query Optimizer 是优化...

weixin_39611208的博客 168

MySQL查询优化之道

01查询优化器模块查询优化器的任务是发现执行 SQL 查询的最佳方案。大多数查询优化器,要么基于规则、要么基于成本。大多数查询优化器,包含 MySQL 的查询优化器,总或多或少地在所有可能的查询评估方案中搜索最佳方案。MySQL 中 MySQL Query Optimizer 是优化器的核心,当 MySQL 数据拿到一个 Query 语句之后会交给 Query Optimizer 去解析,并产生一...

KHOST的博客 250

MySQL基础及优化技术

##MySQL优化技术 Query语句优化基本思路和原则 Explain命令详解 Join的实现原理及优化 ORDER BY原理及优化 GROUP BY原理及优化 转载于:https...

165

mysql优化

查询优化器模块 查询优化器的任务是发现执行 SQL 查询的最佳方案。大多数查询优化器,要么基于规则、要么基于成本。 大多数查询优化器,包含 MySQL 的查询优化器,总或多或少地在所有可能的查询评估方案中搜索最佳方案。 MySQL 中 MySQL Query Optimizer 是优化器的核心,当 MySQL 数据拿到一个 Query 语句之后会交给 Query Optimizer 去解析,...

weixin_30443895的博客 162
上一篇: MySQL数据库服务器逐渐变慢 该如何分析与解决 【待看】
下一篇: MySQL Order By实现原理分析和Filesort优化
大鹏的世界
博客等级 码龄19年 332粉丝 417原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值