java面试题-谈谈sql优化-mysql

远离八股文,面试大白话,通俗且易懂

看完后试着用自己的话复述出来。有问题请指出,有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来,大家一起解决。

这是面试总结出来的几点,每次问道都是这么回答,分层分点。

首先搞懂sql优化的目的是什么,然后针对每个目的具体做什么操作。

目的一:减少磁盘IO次数

在数据库中主要是来自于像全表扫描这种扫描大量数据快的场景,然后就是日志以及数据块的写入所带来的压力

1.  可以通过加索引来避免全表扫描,但是索引根据实际情况添加,太多的时候就会影响新增修改等操作的性能-有得必有失(正常情况下一张表尽量6个以内差不多)

2.  select查询的时候不使用select * ,明确要查询的字段,非必须的字段会占用磁盘内存空间

3.  尽量避免使用子查询(子查询会建立临时表、撤销临时表消耗cpu和io资源,另外临时表肯定没有索引,一定情况下会影响效率)

目的二:减少网络宽带

第一是返回数据太多,数据传输消耗较多。第二是频繁新增更新建立链接

1.sql查询时使用limit减少返回的数据,有时候分大量数据多次查询比一次性大量数据效率要高,甚至可以使用多线程更快。

2.新增、修改等等操作尽量避免多次循环操作,要使用values(),一次性操作,而不是一条一条的去操作。

目的三:降低CPU的消耗

1.join多表联查要尽量优化,有时候冗余字段占不了多少空间,但是如果没有冗余字段就得连表查询,这样就会增加sql复杂度。

2.order by 、group by等操作尽量作用在索引上

3.聚合函数(max、count、sum等),如果数据量比较大,会非常占用时间,mysql引擎原理是把数据一条一条取出来然后进行聚合计算。所以数据量大的时候,聚合函数就非常耗时。

tips:经典例题就是mybatis分页查询的时候,有时候sql直接执行很快,但是通过mybatis分页查询就慢,原因就是分页查询里面会进行count查询总数

针对聚合函数慢的解决方法可以使用统计表,每天将数据统计好存入统计表中,也就是统计表中每天就只有一条数据或者纬度细一点多条数据。这样后面统计直接查询统计表即可、

这是大概的总结 ,我每次遇到这样的问题都是固定模式:

面试官:你对于sql优化有没有经验?

我:之前在工作中遇到过也做过总结,就是看我们的需求是什么,进而对应的做出优化方案。我总结了大概有三点,第一点就是减少磁盘io次数,对于这个可以做的是通过加索引....第二点是...第三点是 .....

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

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

相关文章

最新关于openai.APIConnectionError: Connection error.的解决方法

其实是和以前一样的处理方式,(挂魔法)修改代理,但是openai的源码改了,好多博客的方法不能用了。现在给一个新的修改方式,自己用的,发现可以。 1.找到pip下载的openai的Lib,找到_base…

使用Ansible lineinfile模块进行行级别操作

Ansible是一种功能强大的自动化工具,它提供了各种模块来简化配置管理任务。其中,lineinfile模块是一种特别有用的模块,它允许我们在文件中插入、修改或删除行。本文将介绍Ansible的lineinfile模块,并演示如何使用它来进行行级别操…

01数仓平台 Hadoop介绍与安装

Hadoop概述 Hadoop 是数仓平台的核心组件。 在 Hadoop1.x 时代,Hadoop 中的 MapReduce 同时处理业务逻辑运算和资源调度,耦合性较大。在 Hadoop2.x 时代,增加了 Yarn。Yarn 只负责资源的调度,MapReduce 只负责运算。Hadoop3.x 在…

Python 发送阿里云手机短信消息

一般用于发送验证码,本代码实现功能如下: 1、联接MsSqlServer获取短信任务清单,这个可以业务系统往该表插数据 2、根据阿里云短信息的相关信息(appid,secret,消息模板),发送手机消息 3、创建定时任务&#…

区块链optimism主网节点搭建

文章目录 官方参考资料编译环境搭建编译Optimism Monorepo编译op-geth 执行下载数据快照生成op-geth和op-node通信密钥op-geth执行脚本 op-node执行脚本 启动日志op-gethop-node 本文是按照官方参考资料基于源码的方式成功搭建optimism主网节点。 官方参考资料 源码&#xff1…

如何在VSCode中打包Vue项目?

使用VSCode作为Vue项目的开发环境后,我们需要了解如何打包Vue项目。本文将从多个方面对如何在VSCode中打包Vue项目进行详细阐述。 一、安装依赖 在打包Vue项目之前,我们需要先安装项目所需的依赖。在Vue项目中,可以通过以下命令安装依赖&am…

【链表Linked List】力扣-114 二叉树展开为链表

目录 题目描述 解题过程 官方题解 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应…

蓝桥杯每日一题2023.12.5

题目描述 1.一步之遥 - 蓝桥云课 (lanqiao.cn) 题目分析 对于本题遵循多了就减少了就加的原则&#xff0c;用while进行计算即可 #include<bits/stdc.h> using namespace std; int x, ans; int main() {while(x ! 1){if(x < 1)x 97;else x - 127;ans ;}cout <&…

2023母婴行业矩阵营销洞察报告

二胎政策以来新生儿数量不增反减&#xff0c;根据国家统计局公布的2022年出生人口相比2021年减少 108 万。 从我国母婴行业总体市场规模来看&#xff0c;市场增速在逐渐减缓&#xff0c;整体规模仍呈现平稳增长趋势&#xff0c;预计2023年母婴市场规模超5万亿。 母婴消费潜力正…

C语言之程序的组成和元素格式

目录 关键字 运算符 标识符 姓名和标识符 分隔符 常量和字符串常量 自由的书写格式 书写限制 连接相邻的字符串常量 缩进 本节我们来学习程序的各组成元素&#xff08;关键字、运算符等&#xff09;和格式相关的内容。 关键字 在C语言中&#xff0c;相if和else这样的标识…

【Git】ssh: connect to host github.com port 22: Connection refused

错误展示&#xff1a; 错误原因&#xff1a;22端口被拒绝访问 解决办法 在~/.ssh/config文件&#xff08;有就直接编辑&#xff0c;没有就创建&#xff09;里添加以下内容&#xff0c;这样ssh连接GitHub的时候就会使用443端口。 Host github.comHostname ssh.github.comPort…

练习题——-【学习补档】日期差值

问题描述 描述 有两个日期&#xff0c;求两个日期之间的天数&#xff0c;如果两个日期是连续的我们规定他们之间的天数为两天。 输入描述&#xff1a; 有多组数据&#xff0c;每组数据有两行&#xff0c;分别表示两个日期&#xff0c;形式为YYYYMMDD 输出描述&#xff1a; 每组…

【开题报告】基于JavaWeb的共享会议室预约系统的设计与实现

1.研究背景 随着信息化技术的快速发展&#xff0c;越来越多的企业、学校和机构开始采用共享资源管理系统来提高内部资源利用率&#xff0c;减少时间和人力成本。在这些共享资源中&#xff0c;会议室作为一个重要的共享资源&#xff0c;其利用率的高低直接影响到企业或机构的工…

CleanMyMac X软件到底好不好用?有哪些优势

为了维护mac系统健康&#xff0c;优化系统功能&#xff0c;我们需要定期给电脑进行清理。那么作为mac清理软件CleanMyMac X软件具备哪些独特性和实用性呢&#xff1f;今天就给大家说明一下。 1、 简洁大气的外观。 用户正版官方下载安装之后&#xff0c;软件运行仅需几秒&…

FreeRTOS-钩子函数

钩子函数 Tick滴答钩子 /* FreeRTOSConfig.h */ #define configUSE_TICK_HOOK 1/* cmsis_os2.h */ /**Dummy implementation of the callback function vApplicationTickHook(). */ #if (configUSE_TICK_HOOK 1)__WEAK void vApplicationTickHook (void…

详解python 面向对象三大特征

文章目录 一、面向对象三大特征介绍1、封装&#xff08;隐藏&#xff09;2、继承3、多态 二、继承1、语法格式2、类成员的继承和重写3、super()获得父类定义4、设计模式\_工厂模式实现 5、设计模式\_单例模式实现关于Python技术储备一、Python所有方向的学习路线二、Python基础…

UE5 - 把ArchvizExplorer项目改造成自己的数字孪生项目 - 开发记要

参考&#xff1a; https://blog.csdn.net/qq_17523181/article/details/133853099 https://blog.csdn.net/qq_17523181/article/details/134455597 1. 安装项目 https://www.unrealengine.com/marketplace/zh-CN/product/archviz-explorer https://karldetroit.com/archviz-exp…

如何用好金鸣表格文字识别电脑客户端的“图片编辑”功能?

想要让文字识别效果更上一层楼&#xff0c;图片编辑处理少不了&#xff0c;今天就来教大家如何运用金鸣表格文字识别电脑客户端编辑器提升图片质量。 首先&#xff0c;点击顶部导航菜单中的“软件下载”&#xff0c;下载安装金鸣表格文字识别电脑客户端&#xff0c;并将图片添加…

工业软件:破局智能制造“关键一招”

工业是国民经济的重要支柱&#xff0c;也是技术创新的主战场&#xff0c;是创新活动最活跃、创新成果最丰富、创新应用最集中、创新溢出效应最强的领域之一。 过去&#xff0c;图纸定义产品、工艺约束制程、说明书描述功能&#xff0c;是工程惯例。一旦产品造好&#xff0c;想…

element-plus组件中的el-drawer的使用

在项目的制作过程中经常会用到弹窗组件&#xff0c;这里假设一种情况当你在一个页面需要多个弹窗组件的时候怎么样才能精准的打开和关闭对应的弹窗呐&#xff1f;&#xff1f; ① 绑定一个点击事件----【给点击事件传入一个下标】这里是打开事件 ② 使用element-plus中的 :befo…