新特性解读 | MySQL 8.0:explain analyze 分析 SQL 执行过程

MySQL慢查询优化实战:从EXPLAIN读懂执行计划与索引设计 在大数据量业务场景下,SQL慢查询是后端开发最常见的性能瓶颈之一。理解数据库执行计划是优化查询的基础,而MySQL的EXPLAIN工具则是剖析执行计划的核心手段。通过解读type、rows、Extra等关键字段,可以快速识别全表扫描、索引失效、临时表排序等隐患。在实际工程中,结合慢查询日志定位高频问题,再基于EXPLAIN输出设计合理的联合索引,能显著提升SQL执行效率。本文从执行计划的基本概念出发,拆解各字段含义,并通过真实案例演示从慢查询发现到索引落地的完整优化链路,帮助开发人员建立系统的性能调优思维。 阅读详情
AI摘要

本文介绍了MySQL8.0.16中新增的实验特性explain format=tree,它以树状形式展示执行过程及预估成本。MySQL8.0.18引入的EXPLAIN ANALYZE则在此基础上提供实际执行时间、返回行数等信息。

作者:胡呈清

爱可生 DBA 团队成员,擅长故障分析、性能优化,个人博客:https://www.jianshu.com/u/a95ec11f67a8,欢迎讨论。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


介绍

MySQL 8.0.16 引入一个实验特性:explain format=tree ,树状的输出执行过程,以及预估成本和预估返回行数。在 MySQL8.0.18 又引入了 EXPLAIN ANALYZE,在 format=tree 基础上,使用时,会执行 SQL ,并输出迭代器(感觉这里用“算子”更容易理解)相关的实际信息,比如执行成本、返回行数、执行时间,循环次数。

文档链接:https://dev.mysql.com/doc/refman/8.0/en/explain.html#explain-analyze

示例:

mysql> explain format=tree SELECT * FROM t1 WHERE t1.a IN (SELECT t2.b FROM t2 WHERE id < 10);
*************************** 1. row ***************************
  -> Nested loop inner join  (cost=4.95 rows=9)
    -> Filter: (`<subquery2>`.b is not null)  (cost=2.83..1.80 rows=9)
        -> Table scan on <subquery2>  (cost=0.29..2.61 rows=9)
            -> Materialize with deduplication  (cost=3.25..5.58 rows=9)
                -> Filter: (t2.b is not null)  (cost=2.06 rows=9)
                    -> Filter: (t2.id < 10)  (cost=2.06 rows=9)
                        -> Index range scan on t2 using PRIMARY  (cost=2.06 rows=9)
    -> Index lookup on t1 using a (a=`<subquery2>`.b)  (cost=2.35 rows=1)
1 row in set (0.01 sec)

mysql> explain analyze SELECT * FROM t1 WHERE t1.a IN (SELECT t2.b FROM t2 WHERE id < 10)\G
*************************** 1. row ***************************
  -> Nested loop inner join  (cost=4.95 rows=9) (actual time=0.153..0.200 rows=9 loops=1)
    -> Filter: (`<subquery2>`.b is not null)  (cost=2.83..1.80 rows=9) (actual time=0.097..0.100 rows=9 loops=1)
        -> Table scan on <subquery2>  (cost=0.29..2.61 rows=9) (actual time=0.001..0.002 rows=9 loops=1)
            -> Materialize with deduplication  (cost=3.25..5.58 rows=9) (actual time=0.090..0.092 rows=9 loops=1)
                -> Filter: (t2.b is not null)  (cost=2.06 rows=9) (actual time=0.037..0.042 rows=9 loops=1)
                    -> Filter: (t2.id < 10)  (cost=2.06 rows=9) (actual time=0.036..0.040 rows=9 loops=1)
                        -> Index range scan on t2 using PRIMARY  (cost=2.06 rows=9) (actual time=0.035..0.038 rows=9 loops=1)
    -> Index lookup on t1 using a (a=`<subquery2>`.b)  (cost=2.35 rows=1) (actual time=0.010..0.010 rows=1 loops=9)
1 row in set (0.01 sec)

可以看出 explain format=tree 与传统的执行计划相比,展示了比较清晰的执行过程。而 explain analyze 则会在此基础上多输出实际的执行时间、返回行数和循环次数。

阅读顺序

  1. 从右到左:没有遇到并列的迭代器之前,都是从右边开始执行;
  2. 从上到下:遇到并列的迭代器,都是上边的先开始执行

上述示例阅读顺序如下图(注意最好不要\G输出,否则第一行的缩进不准确),SQL 的执行顺序为:

  1. 使用 Nested loop inner join 算法;
  2. t2 先取数据(Index range scan)、筛选(Filter)、物化成临时表(Materialize),作为驱动表;
  3. 将驱动表数据带入到 t1 进行查询(Index lookup on t1),循环执行 9 次。

重要信息

以下面为例:

Index lookup on t1 using a (a=`<subquery2>`.b)  (cost=2.35 rows=1) (actual time=0.015..0.017 rows=1 loops=9)

cost

预估的成本信息,计算比较复杂。如果想了解,可以查看:explain format=json 详解

rows

第一个 rows 是预估值,第二个 rows 是实际返回行数。

actual time

“0.015…0.017”,注意这里有两个值,第一个值是获取第一行的实际时间,第二个值获取所有行的时间,如果循环了多次就是平均时间,单位毫秒。

loops

因为这里使用了 Nested loop inner join 算法,按照阅读顺序,t2 是驱动表,先进行查询被物化成临时表;t1 表做为被驱动表,循环查询的次数是 9 次,即 loops=9。

MySQL数据库从入门到调优实战:环境搭建、SQL执行与性能优化全链路指南 这类教程最值得先看的不是它承诺几天能学会,而是它能不能帮你把数据库从“安装、建表、写查询”到“看懂执行计划、动手调优”这个完整链路跑通。很多新手卡住的点不是语法背不下来,而是不知道每一步操作背后的资源消耗、执行顺序和结果该怎么验证。如果你是完全零基础,或者之前学过但一直没动手做过持续优化,那这篇文章会按实际项目推进的顺序,带你走一遍从环境搭建到实战调优的关键环节。 我建议你先别急着背 SQL 语句大全,而是按这个顺序来:第一,确保你的本地环境能稳定运行 MySQL 服务;第二,能用客户端连上并执行最基本的增 阅读详情

相关推荐

MySQL EXPLAIN 执行计划深度解析:从 type 列 10 种访问类型到实战优化

本文深度解析MySQL EXPLAIN执行计划中的type列10种访问类型,从高效的system到低效的ALL,详细讲解每种类型的特征、优化场景及实战案例。通过理解这些访问类型,开发者可以精准诊断SQL性能问题,优化索引策略,提升查询效率,特别适合数据库管理员和开发人员参考。

weixin_33816946的博客 356

MySQl查询分析工具 EXPLAIN ANALYZE

摘自:https://hackmysql.com/book-2/

vonlinee的博客 2945

MySQL索引失效与慢SQL优化实战:从EXPLAIN到联合索引设计

在数据库性能调优中,索引失效是导致查询缓慢的常见元凶。MySQL优化器基于统计信息选择执行计划,当函数操作、隐式类型转换或数据分布不均时,即使存在索引也可能退化为全表扫描。理解优化器的成本决策逻辑,是定位问题的第一步。联合索引的设计核心在于最左前缀原则与字段顺序取舍,覆盖索引则能进一步减少回表开销。借助EXPLAIN中的type、rows、Extra列,可精准识别全表扫描、Using filesort等性能瓶颈。面对深分页、OR条件等典型慢SQL场景,可通过延迟关联、拆分SQL等工程手段实现数量级的性能提升

weixin_30431445的博客 264

【MySQL】explain analyze简介

通过主键索引(聚簇索引)扫描表,仅进行单行扫描,预计消耗0.35ms并返回1行,实际读取第一行平均花费0.084ms,返回所有行平均花费0.084ms,共循环调用该迭代器1次。:进行嵌套表连接,预计消耗0.70ms并返回1行,实际读取第一行平均花费0.085ms,返回所有行平均花费0.085ms,共循环调用该迭代器1次,返回0行。:扫描d1全表,预计消耗0.35ms并返回1行,实际读取第一行平均花费0.084ms,返回所有行平均花费0.084ms,共循环调用该迭代器1次,返回0行。

qq_38396859的博客 3764

2023-03-07 mysql-explain-format=tree-解读-以TPCH-Q2为例

mysql-explain-tree-解读-以TPCH-Q2为例。

悟世之路 1282

Stata实战:用双向固定效应模型分析房价,从数据清洗到结果解读(附完整代码)

本文详细介绍了如何使用Stata实现房价数据的双向固定效应模型分析,从数据清洗到结果解读的全流程。通过具体代码示例,帮助读者掌握面板模型的应用技巧,特别适合经济学和金融学研究者进行房价影响因素分析。

weixin_31528001的博客 275

MySQL EXPLAIN ANALYZE

本文转载自“MySQL解决方案工程师”公众号,由徐轶韬翻译作者:Norvald H. Ryeng 译:徐轶韬MySQL8.0.18刚刚发布,它包含一个全新的功能EXPL...

老叶茶馆 7825

14自由度汽车动力学模型

多体系统分解簧上质量刚体:包含车身主体,具有6个自由度(x/y/z平移 + 俯仰/侧倾/横摆旋转)四个簧下质量刚体:每个车轮独立建模,含垂直跳动(z向)和旋转(绕z轴)自由度总自由度:6(车身) + 4×2(车轮) = 14自由度。

chao189844的博客 1194

MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点3:EXPLAIN ANALYZE

EXPLAIN ANALYZE是MySQL 8.0.18版本以后引入的新功能,用于对EXPLAIN命令的扩展。其输出结果类似EXPLAIN ( format=tree )一样输出查询计划和估计成本之外,还会输出执行计划中各个迭代器的实际成本和执行时间等信息,帮助用户分析和了解慢SQL的瓶颈。-预估的执行成本-预估的返回行数-实际返回第一条的时间 (ms)-实际返回所有行的时间 (ms)-实际迭代器返回的行数 (rows)-实际循环次数 loopsEXPLAIN ANALYZE具体语法如下。

SQLplusDB的小院 2279

告别Modern Standby!Win10/11强制S3睡眠的终极指南(含BIOS设置避坑)

本文是针对Windows 10/11用户因Modern Standby(S0低电量待机)导致睡眠耗电、发热问题的终极解决方案。文章详细对比了Modern Standby与传统S3睡眠(Suspend to RAM)的本质区别,并提供了从系统诊断、注册表修改、BIOS/UEFI设置避坑到驱动优化的完整步骤,旨在帮助用户强制启用稳定、省电的S3睡眠模式,彻底告别睡眠噩梦。

n7o8p的博客 790

rk3566-11.0新增device分区

1.增加块设备 2.修改根目录节点权限 3.开机启动自动挂载 增加块设备 1.修改parameter.txt文件,新增块设备大小及命名 device/rockchip/rk356x/rk3566_r/parameter.txt FIRMWARE_VER: 11.0 MACHINE_MODEL: rk3566_r MACHINE_ID: 007 MANUFACTURER: rockchip MAGIC: 0x5041524B ATAG: 0x00200800 MACHINE

weixin_51115260的博客 3381

MySQL 性能调优入门:EXPLAIN、Profile 与 Trace 的应用

MySQL 作为企业核心 OLTP 数据库之一,其性能瓶颈往往隐藏在一条条“写得没问题但跑得很慢”的 SQL 中。理解执行计划、掌握实际执行代价,是调优的第一步。本文将基于 MySQL 8.0+ 的最新能力,系统讲解 EXPLAIN 的原理与用法、Profile 如何揭示资源消耗细节、Trace 如何重现优化器的决策路径,并通过真实场景案例演示如何协同使用这三大工具精准诊断和优化 SQL 性能。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1468

AI在生物学领域的应用:基因序列分析和人工智能生物学

好的,非常感谢您提供的这个精彩的主题和详细的要求。我会全力以赴,遵循您的要求写一篇内容丰富、结构清晰、论述深入的专业技术文章。现在,就让我们开始这篇关于"AI在生物学领域的应用:基因序列分析和人工智能生物学"的博客文章吧! 1. 背景介绍 1.1 生物信息学的兴起

AI天才研究院 1413

你真的会用EXPLAIN么,SQL性能优化王者晋级之路

MySQL的开发人员或者DBA,经常使用EXPLAIN语句来查看SQL的执行计划。EXPLAIN的解读文章多如牛毛,每个开发人员对EXPLAIN结果都有自己的理解。然而,你真的会使用EXPLAIN吗? 使用`explain for connection`可以查看指定会话的SQL执行计划。这样就可以看到当前正在实际执行的SQL的执行计划。MySQL 8.0引入的`EXPLAIN ANALYZE`向我们清晰展示了SQL的估算执行成本和实际执行消耗,对于优化SQL性能有着非常大的价值。

真水无香,大象无形,做本分的自己,记录技术点滴 8128

Android AVB 分析(十三)dm-verity 设备是如何映射的?

在上一篇《Android AVB 分析(十二)嵌入式设备安全中的 dm-verity 简介》介绍 dm-verity 原理的时候,作者提供了一个 dm-verity 演示的例子。本篇我们基于 AOSP 源码 `android-13.0.0_r41` 实际编译生成的 Google Pixel 7 (“panther”) 设备的 system 分区镜像进行 dm-verity 设备验证实战。

洛奇看世界 2437

手把手教你学simulink(85.6)--非线性控制:滑模控制场景实例:基于Simulink建模仿真的滑模控制(Sliding Mode Control, SMC)在无人机自主飞行控制系统中的应用

首先,在MATLAB命令窗口中定义系统的参数和状态空间模型。matlab深色版本% 系统参数m = 1.5;% 无人机质量 (kg)g = 9.81;% 重力加速度 (m/s^2)% 惯性矩阵 (kg*m^2)% 初始条件pos0 = [0;0;0];% 初始位置 (m)vel0 = [0;0;0];% 初始速度 (m/s)0;0];% 初始姿态角 (rad)0;0];% 初始角速度 (rad/s)

MHD0815的博客 649

MySQL EXPLAIN执行计划详解与SQL性能优化实战

SQL查询优化是数据库性能调优的核心环节,其中执行计划分析是关键突破口。通过EXPLAIN命令可以获取MySQL优化器生成的查询执行计划,揭示索引使用、表连接顺序等关键决策逻辑。从原理上看,执行计划反映了存储引擎从磁盘读取数据的方式(全表扫描或索引访问)以及服务器层的处理流程(排序、临时表等)。在工程实践中,合理利用执行计划分析能快速定位性能瓶颈,比如发现未走索引的查询、低效的连接方式或隐式的类型转换问题。特别是在处理大数据量表时,通过type列识别ALL全表扫描情况,结合覆盖索引、最左前缀原则等优化手段,

weixin_34098209的博客 224

图神经网络实战(21)——图神经网络的可解释性

在本节中,我们探讨了应用于图神经网络 (Graph Neural Networks, GNN) 的可解释性人工智能 (Explainable Artificial Intelligence, XAI) 技术。可解释性是许多领域的关键要素,可以帮助我们建立更好的模型。我们介绍了不同的局部解释技术,并重点讨论了 GNNExplainer (基于扰动的方法),在图分类任务中应用 GNNExplainer。

盼小辉丶的博客 9484

ThinkJS 实战:think-pm2 进程环境检测与 PM2 部署配置完全指南

本篇技术指南围绕 ThinkJS 生态中的专用工具包 think-pm2 展开,讲解如何在 Node.js 进程中精确检测"当前是否运行在 PM2 管理之下"以及"是否处于 PM2 的 cluster 模式",并结合 ThinkJS 主框架源码说明为什么 PM2 cluster 模式会被 ThinkJS 显式拒绝,最后给出可落地的 `pm2.json` 部署配置。读完本文,你将掌握 PM2 环境变

gitblog_00235的博客 449

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

遇到慢查询怎么办?一文解读MySQL 8.0查询分析工具

合集 - 数据库最新分享(75)1.华为云峰会2024,GaussDB扬帆出海,给世界一个更优选择02-282.预算有限,资源冗余?DWS集群缩容如何帮你解决烦劳02-293.数智融合,华为云GaussDB(for MySQL)助力企业释放数据新价值03-014.RDS for MySQL Serverless公测上线:弹性伸缩,最高可降成本超80%03-045.GaussDB跨云容灾:实现跨地域...

weixin_42470362的博客 198

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

MySQL 8.0实战:安装配置、存储过程与执行计划调优全指南

数据库是业务系统的核心底座,MySQL 作为最流行的开源关系型数据库之一,其版本选型与安装配置直接决定了后续开发运维的稳定性。MySQL 8.0 在事务、索引、窗口函数等方面提供了更强大的能力,同时也引入了新的认证插件和密码策略,给初学者带来不少连接与权限上的困惑。理解连接层、服务层与存储引擎的协作原理,有助于快速定位 socket 错误、锁表、慢查询等高频问题。围绕存储过程、行转列、执行计划等实用技术,结合真实业务场景进行优化,能显著提升数据库操作效率与查询性能。本文从基础安装到 EXPLAIN 调优,系

weixin_34279579的博客 274

jre9下载 jdk9

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

MySQL 8.0 新特性解读(上)

目录1.1-所有系统表更换为InnoDB引擎1.2-DDL原子化1.3-DDL秒加列1.4-公用表表达式(CTE:Common Table Expression)1.5-默认字符集由latin1变为utf8mb41.6-Clone插件1.7-资源组1.8-角色管理1.9-多值索引1.10-函数索引1.11-不可见索引1.12-新增降序索引1.13-SET_VAR 语法1.14-参数修改持久化1.15-innodb select for update跳过锁等待1.16-group by 不再隐式排序1.17-

meser88的博客 901

《Java 100 天进阶之路》第85篇:SQL优化实战(2026版)

从慢查询日志定位到 EXPLAIN 执行计划深度解读,掌握索引优化、深分页解决方案(延迟关联/键集/游标)、COUNT 大数据量替代方案、JOIN 小表驱动大表,以及 MySQL 8.0+ 窗口函数等新特性实战。附三星索引设计原则与高频面试题,助你写出高性能 SQL,轻松应对数据库优化面试。

折哥|智能物流与Java实战,副高数据库工程师。深耕出版社物流WMS/OMS(线体/立库/VGA),也分享Java进阶与OMS电商对接。Oracle→PG实战派。相信沉淀可迁移能力,分享通用技术,不藏不虚。 6495

MySQL执行计划解析与性能优化实战

数据库查询优化是提升系统性能的关键环节,其中执行计划分析作为核心技术手段,能够直观展示SQL语句的执行路径。通过EXPLAIN命令可以获取MySQL优化器选择的查询策略,包括索引使用情况、表连接顺序等核心信息。在工程实践中,合理利用索引合并、索引下推等特性,能显著提升查询效率。特别是在处理电商订单、分页查询等典型场景时,执行计划分析可以帮助开发者快速定位性能瓶颈。本文结合慢查询优化等实际案例,详解如何通过执行计划调优将响应时间从秒级降至毫秒级,为数据库性能优化提供实用解决方案。

weixin_33563728的博客 278

authentication method mysql 8.0查询_新特性解读 | MySQL 最新的release notes

原创作者:爱可生开源社区从MySQL发布正式版本8.0.11以来,MySQL又相继发布8.0.12-8.0.15四个版本,本文着重介绍MySQL 8.0.13和8.0.14 版本中值得关注的改进点。为什么不关注8.0.15,因为8.0.15的release notes 基本没啥信息。MySQL 8.0.13部分改进和特性:1.提高SELECT COUNT(*) FROM tbl_name 语句的查...

weixin_28860509的博客 120
上一篇: 故障分析 | MySQL 设置 terminology_use_previous 参数导致数据库 Crash
下一篇: 技术分享 | 关于 MySQL 自增 ID 的事儿
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值