SQL 优化建议

优化建议

数据库中最大的性能瓶颈就是磁盘io,主要体现在读写前寻找磁道的过程中;另一个影响性能因素是内存,innodb在内存中开辟了一个Buffer_Pool缓冲池,然后把数据页和索引页都放在内存缓冲池中读写,影响缓冲池的参数是innodb_buffer_pool_size,如果仅有innodb存储引擎的数据库服务器上,可以设置为60%的内存

对于同一份数据,当我们使用不同的方式去寻找其中的内容时,所需要读取的数据量可能是天壤之别,所消耗的资源相差也很大

join语句优化

  • 使用小表驱动大表(小结果集驱动大结果集),减少join语句的nestedLoop的循环总数
  • 优先优化内层循环,内层循环是执行次数最多的
  • 保证join语句中被驱动表上的join条件已被索引
  • 尽量用join代替子查询
  • join buffer的大小对整个join语句的消耗起到关键的作用

减少排序

排序会消耗较多 CPU 资源,所以减少排序可以在缓存命中率高、IO 能力足够的场景下会影响 SQL 的响应时间

减少排序的方法

  • 通过利用索引来排序的方式进行优化
  • 减少参与排序的记录条数
  • 非必要不对数据进行排序

减少or的使用

当 where 子句中存在多个条件以“或”并存的时候,MySQL 的优化器并没有很好的解决其执行计划优化问题,再加上MySQL 特有的 SQL 与 Storage 分层架构方式,造成了其性能比较低下,使用 union all 或者是union(必要的时候)的方式来代替“or”会得到更好的效果

防止出现索引失效的情况

  • 计算
  • 使用not,<>,!=
  • 使用IS NULL和IS NOT NULL
  • 数据类型转换
  • 对索引字段使用函数或者表达式
  • 索引字段中不要有null

group by优化

group by中where高于having,能写在where中的限定条件就不要去having中限定

https://zhhll.icu/2021/数据库/关系型数据库/MySQL/进阶/12.优化建议/

本文由 mdnice 多平台发布

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

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

相关文章

算子:详细篇

目录 一、执行环境 1.1 创建执行环境 1.2 执行模式 二、源算子 2.1 从集合中读取数据 2.2 从文件读取数据 2.3 从socket读取数据 2.4 从kafka读取数据 三、转换算子 3.1 基本转换算子 &#xff08;1&#xff09;映射(map) &#xff08;2&#xff09;过滤(filter) &#xff08…

新建react项目,react-router-dom配置路由,引入antd

提示&#xff1a;reactrouter6.4版本&#xff0c;与reactrouter5.0的版本用法有区别&#xff0c;互不兼容需注意 文章目录 前言一、创建项目二、新建文件并引入react-router-dom、antd三、配置路由跳转四、效果五、遇到的问题六、参考文档总结 前言 需求&#xff1a;新建react项…

自动化测试平台搭建背景及记录

在目前产品的迭代过程中&#xff0c;公司现有的自动化测试体系存在很多问题&#xff0c;大多数情况是人工进行用例回归测试&#xff0c;低效且易出错&#xff0c;导致测试流程在效率和品质方面均未达到理想状态。同时&#xff0c;业务上线周期的日益缩短也导致产品质量的不稳定…

uniapp组件库Line 线条 的适用方法

目录 #平台差异说明 #基本使用 #线条类型 1.3.7 #兼容性 #API #Props 此组件一般用于显示一根线条&#xff0c;用于分隔内容块&#xff0c;有横向和竖向两种模式&#xff0c;且能设置0.5px线条&#xff0c;使用也很简单。 #平台差异说明 AppH5微信小程序支付宝小程序百…

三.逻辑架构

逻辑架构 1.逻辑架构剖析1.1服务器处理客户端请求1.2Connectors1.3 第一层&#xff1a;连接层1.4 第二层&#xff1a;服务层1.5 第三层&#xff1a;引擎层1.6存储层1.7小结 2.SQL执行流程2.1MySQL中的SQL执行流程2.2MySQL8中SQL执行原理2.3MySQL5.7中SQL执行原理2.4SQL语法顺序…

无人机调试面板

无人机调试面板是用于配置、监控和调试无人机的用户界面。它允许用户进行各种设置&#xff0c;监控无人机的状态&#xff0c;诊断任何可能的故障&#xff0c;并记录飞行日志。以下是一个无人机调试面板的主要功能和组件的概述。 飞行控制 飞行控制部分允许用户控制无人机的起…

R语言【taxlist】——df2taxlist():将数据帧和字符串转换为 taxlist 对象

Package taxlist version 0.2.4 Descriptioin 将数据框转换为 taxlist 对象。此外&#xff0c;包含分类名称的字符向量将被转换&#xff0c;但不会返回任何关于分类等级和亲本分类群的信息。 Usage df2taxlist(x, ...)## S3 method for class data.frame df2taxlist(x, taxon…

C++大学教程(第九版)6.48掷骰子游戏的改进

文章目录 题目代码运行截图 题目 (掷骰子游戏的改进)请修改图6.11 中的双游戏序允许家下赌注。 把序中运行掷骰子游戏的部分打包为一个函数。 初始化变量 bankBalance 为 1000美元。 提示玩家输入赌注数&#xff1a;wager。 利用一个 while 循环来检查 wager 是否小于或等于 b…

【数据结构和算法】--- 二叉树(4)--二叉树链式结构的实现(2)

目录 一、二叉树剩余函数1.1二叉树的层序遍历1.2判断二叉树是否为完全二叉树1.3二叉树销毁 二、二叉树的构建及遍历OJ题 一、二叉树剩余函数 1.1二叉树的层序遍历 层序遍历&#xff1a; 除了先序遍历、中序遍历、后序遍历外&#xff0c;还可以对二叉树进行层序遍历。设二叉树…

存内生态构建重要一环- 存内计算工具链

本篇文章重点讲述存内计算相关工具链&#xff0c;我们将从工具链定义出发&#xff0c;依次讲述工具链研究背景及现有工具链、存内计算相关工具链发展现状、存内计算工具链未来展望等内容。 一.工具链研究背景及现有工具链 工具链&#xff0c;英文名称toolchain&#xff0c;通…

自然语言处理-文本标注

文本标注 现在让我们考虑词元级任务&#xff0c;比如文本标注&#xff08;text tagging&#xff09;&#xff0c;其中每个词元都被分配了一个标签。在文本标注任务中&#xff0c;词性标注为每个单词分配词性标记&#xff08;例如&#xff0c;形容词和限定词&#xff09;。 根据…

SpringBoot整合RabbitMQ实现发布订阅

RabbitMQ是一个开源的消息代理和队列服务器&#xff0c;用于通过轻量级消息传递协议&#xff08;AMQP&#xff09;在分布式系统中传递消息。在RabbitMQ中&#xff0c;主要有以下角色&#xff1a; 生产者&#xff08;Producer&#xff09;&#xff1a;负责发送消息的应用程序。…

MySQL数据的增删改查

小练习 1. 在数据库 exercise 中创建课程表 stu_course &#xff0c;包含字段课程编号 (number) &#xff0c;类型为整数&#xff0c;长度为 11 &#xff0c;是主键&#xff0c;自增长&#xff0c;非空、课程名称 (name) &#xff0c;类型为字符串&#xff0c;长度为 20 &…

The Rise and Potential of Large Language Model Based Agents: A Survey 导读

这篇论文探讨了基于大型语言模型(LLM)的智能代理的发展和潜力。传统的AI算法或训练策略只能提高特定任务的表现,而LLM作为通用且强大的模型,可以为设计适应不同场景的智能代理提供基础。作者提出了一个包含“大脑”、“感知”和“行动”的通用框架,并将其应用于单个代理、…

oracle视图、存储过程、定时任务、用户授权、备份表

视图 create or replace view user_view as select user_id,dept_id,phonenumber,name,user_name from sys_user where del_flag0 and status0 and sfyzhY;存储过程 create or replace procedure sg_zzjg ascursor region_list isselect ID_,CODE_,CREATE_TIME,CREATE_USER_I…

macos Android平台签名证书(.keystore)

一、申请appid的使用说明&#xff08;有appid的请忽略申请apid&#xff09; 创建应用 申请的appid在源码视图填写后会自动生成一个对应的包名 ⚠️注意&#xff1a;申请appid的时候应用名称和项目名称保持一致。 二、 Android如何使用自用证书进行打包 1.找到安装jdk的路径 …

【深度学习】【AutoDL】【SSH】通过VSCode和SSH使用AutoDL服务器训练模型

身边没有显卡资源或不足以训练模型时&#xff0c;可以租赁服务器的显卡。 1、注册AutoDL并配置环境 首先打开AutoDL官网&#xff0c;注册账号并租赁自己期望的显卡资源 点击“租赁”之后&#xff0c;我们要继续选择基础环境。此处&#xff0c;我们让其自动配置好基础的pytor…

【速存】深入理解Django ORM:编写高效的数据库查询

Django作为一个高级Python Web框架&#xff0c;其自带的对象关系映射&#xff08;ORM&#xff09;是其最强大的特性之一。ORM允许开发者以编程语言原生的方式操作数据库&#xff0c;而无需编写原始的SQL查询。本文展示如何在Django项目中利用ORM执行各种数据库查询&#xff0c;…

.NET中的matplotlib平替,ScottPlot简单使用

文章目录 前言解决方案Python调用.NET 原生解决 ScottPlot找到文章ScottPlot Nuget安装简单代码测试代码跑不了5.0新版本测试 总结 前言 我之前在学OpenCV 三语言开发的时候&#xff0c;遇到了一个问题&#xff0c;怎么可视化的显示数据。Python有matplotlib&#xff0c;那么C…

Tomcat的安装及配置教程

文章目录 一、Tomcat二、安装流程三、常见问题四、相关文章 一、Tomcat Tomcat是一个开源的Java Servlet容器&#xff0c;它实现了Java Servlet和JavaServer Pages&#xff08;JSP&#xff09;规范&#xff0c;并为Java Web应用程序提供Web服务器环境。以下是Tomcat的一些详细…