当前位置: 首页 > news >正文

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次数,对于这个可以做的是通过加索引....第二点是...第三点是 .....

相关文章:

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

远离八股文,面试大白话,通俗且易懂 看完后试着用自己的话复述出来。有问题请指出,有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来,大家一起解决。 这是面试总结出来的几点,每次问道都是这么回…...

【Linux服务器Java环境搭建】07 在linux中安装MySql,以及对MySQL的配置与远程连接

【Linux服务器Java环境搭建】01购买云服务器以及在服务器中安装Linux系统 【Linux服务器Java环境搭建】02 通过xftp和xshell远程连接云服务器 【Linux服务器Java环境搭建】03 Git工具安装 【Linux服务器Java环境搭建】04 JDK安装(JAVA环境安装) 【Linux服…...

用 LangChain 搭建基于 Notion 文档的 RAG 应用

如何通过语言模型查询 Notion 文档?LangChain 和 Milvus 缺一不可。 在整个过程中,我们会将 LangChain 作为框架,Milvus 作为相似性搜索引擎,用二者搭建一个基本的检索增强生成(RAG)应用。在之前的文章中&a…...

QT中如何使用自定义控件

在 Qt 中,要使用自定义控件,需要遵循以下步骤: 创建自定义控件: 首先,需要创建一个自定义控件类,该类继承自 QWidget 或 QGraphicsItem 等基本控件类,并实现其相关函数和槽函数等。 在头文件中…...

xcode ——Instrumets(网络连接调试)使用

环境: instruments 使用只能在真机调试时使用,且真机系统必须ios15 点击debug 按钮——Network——Profile in Instruments 然后就可以看到如下面板 展开运行的项目,点击session下的域名,下方回出现该域名下的网络请求。点击Deve…...

Ps:文字操作常用快捷键

对文字的设置操作,可在工具选项栏或“字符”面板上进行。但是,如果能记住并使用快捷键,可大大提高工作效率。 设置文字颜色 Color 1、选中几个或全部文字后,除了使用工具选项栏上的“颜色”按钮,还可以使用快捷键 Alt…...

SpringSecurity的默认登录页的使用

SpringSecurity的默认登录页的使用 01 前期准备 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mysql驱动--><dependency><grou…...

【Rust日报】2023-12-04 slint 成功案例

slint 成功案例 SK Signet是美国领先的电动车充电解决方案提供商&#xff0c;推出了适用于其电动车充电桩的新型HMI&#xff08;人机界面&#xff09;。支持15英寸和32英寸触摸屏。 该HMI由Slint制作&#xff0c;为充电站运营商提供了额外的商机。SK Signet经理Sang-Baek Lee表…...

嵌入式硬件和软件哪个好?

嵌入式硬件和软件哪个好? 嵌入式软硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程师的&#xff0c;首先我们先来看看嵌入式硬件工程师吧! 嵌入式硬件开发工程师主要编写嵌入式系统硬件总体方案和详细方案&#xff0c;要求理解嵌入式系统架构&#xff0c;有一…...

MySQL 8.x 自签证书通过keytool和openssl转成JKS文件

一、写在前面 数据库MySQL 8.0 通过自签命令在datadir下生成了所有的证书文件。由于Java的JDK不支持直接加载PEM格式的证书&#xff0c;所以需要将PEM格式证书转换成Java能够直接加载的JKS格式证书。我们需要将根证书ca.pem转换成JKS格式的根证书truststore.jks&#xff0c;将…...

MybatisPlus概述

MybatisPlus概述 无侵入&#xff1a;只做增强不做改变&#xff0c;引入它不会对现有工程产生影响&#xff0c;如丝般顺滑损耗小&#xff1a;启动即会自动注入基本 CURD&#xff0c;性能基本无损耗&#xff0c;直接面向对象操作强大的 CRUD 操作&#xff1a;内置通用 Mapper、通…...

C++之枚举与宏定义

1 枚举enum C的枚举类型可以用来表示一组有限且固定的值。比如在如下代码中&#xff1a; enum Color { RED, GREEN, BLUE };定义了Color的枚举类型&#xff0c;分别对应三种不同的颜色。C编译器会为枚举类型的常量分配整数值&#xff0c;从0开始递增。因此&#xff0c;在这个…...

DAPP开发【09】NFT交易市场开发(hardhat测试)

测试文件下新建market.js文件 扁平化&#xff0c;将所有依赖放在tmp.sol&#xff0c;可以去给他人使用 npx hardhat flatten > tmp.sol 测试文件 const {expect} require(chai); const {ethers} require(hardhat);describe(Market,async function(){//定义三个合约&a…...

【Spring Boot】如何通过RestTemplate获取另一个服务的接口返回信息

背景 在查询订单信息的时候&#xff0c;需要获取用户的信息&#xff0c;同时订单和用户分属于不同的服务中&#xff0c;并且服务的数据库的数据分开的&#xff0c;其直接连接数据库并操作数据库是不可以的。那我们可以通过RestTemplate对象请求另一个服务的API接口获取相关的响…...

文字识别(OCR)专题——基于NCNN轻量级PaddleOCRv4模型C++推理

前言 PaddleOCR 提供了基于深度学习的文本检测、识别和方向检测等功能。其主要推荐的 PP-OCR 算法在国内外的企业开发者中得到广泛应用。在短短的几年时间里&#xff0c;PP-OCR 的累计 Star 数已经超过了32.2k&#xff0c;常常出现在 GitHub Trending 和 Paperswithcode 的日榜…...

❀My学习Linux命令小记录(14)❀

目录 ❀My学习Linux命令小记录&#xff08;14&#xff09;❀ 56.man指令 57.whatis指令 58.info指令 59.--help指令 60.uname指令 ❀My学习Linux命令小记录&#xff08;14&#xff09;❀ 56.man指令 功能说明&#xff1a;查看Linux中的指令帮助。 &#xff08;ps.man命…...

SqlServer存储过程中使用in

第一步&#xff1a;创建测试存储过程&#xff1a; CREATE PROCEDURE [dbo].[test] deptCode varchar(MAX)AS BEGINSELECT * from DEPT_INFO_A where DEPT_CODE in (deptCode)END 此存储过程只是一个简单的查询 第二步测试&#xff1a; 传入的 deptCode为&#xff1a;101200…...

Selenium+Unittest+HTMLTestRunner框架更改为Selenium+Pytest+Allure(二)

1 代码框架 整体项目结构如图&#xff1a; Common&#xff1a;公共库 Logs&#xff1a; 日志目录 Page&#xff1a; 页面元素 Report&#xff1a;测试报告 TestCase&#xff1a;测试用例 TestData&#xff1a; 测试数据 2 单模块运行 直接上代码&#xff1a; # -*- coding…...

Kotlin Lambda使用

Kotlin Lambda使用 fun main() /*: Unit*/ {// Lambda会慢慢的难度升级// Kotlin Unit Java void// TODO 下面全部都是函数声明&#xff0c; 既然是函数声明&#xff0c;就不能调用// 函数的声明 用lambda去描述函数的声明val method1 : () -> Unitval method2 : (Int, In…...

华容道问题求解第一部分_思路即方案设计

一、前言 华容道是一种传统的益智游戏&#xff0c;通常由一个长方形木板和若干个方块组成。其中包括一个或多个不同颜色的方块&#xff08;也称为车块&#xff09;和其他大小相同的方块&#xff08;也称为障碍块&#xff09;。游戏的目标是将车块从木板的一个端点移动到另一个…...

基于SSM框架的传统服饰文化平台体验(10034)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

番茄小说下载器终极指南:如何轻松构建个人离线图书馆

番茄小说下载器终极指南&#xff1a;如何轻松构建个人离线图书馆 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 你是否经常在地铁、高铁或飞机上想要阅读番茄小说&#xff0c…...

OBS多路RTMP推流插件:一站式解决多平台同步直播难题

OBS多路RTMP推流插件&#xff1a;一站式解决多平台同步直播难题 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 还在为每次直播需要在不同平台间手动切换而烦恼吗&#xff1f;obs-multi…...

AiP8F7201单芯片电机驱动方案:从硬件设计到FOC算法实战

1. 项目概述&#xff1a;当MCU遇上三相全桥&#xff0c;一颗芯片的“跨界”革命最近在做一个无刷电机驱动的小项目&#xff0c;选型时发现了一个挺有意思的芯片——AiP8F7201。这玩意儿严格来说不能算传统意义上的“微控制器”&#xff0c;它更像是一个自带“大脑”和“强健四肢…...

5分钟快速上手GSE:魔兽世界智能技能循环终极指南

5分钟快速上手GSE&#xff1a;魔兽世界智能技能循环终极指南 【免费下载链接】GSE-Advanced-Macro-Compiler GSE is an alternative advanced macro editor and engine for World of Warcraft. 项目地址: https://gitcode.com/gh_mirrors/gs/GSE-Advanced-Macro-Compiler …...

保姆级教程:用斐讯N1盒子刷Armbian 5.77,打造你的专属Debian服务器(附解决负载过高问题)

斐讯N1盒子改造指南&#xff1a;从电视盒子到高性能家庭服务器的蜕变 在智能家居和个性化网络需求日益增长的今天&#xff0c;拥有一台24小时运行的家庭服务器成为许多技术爱好者的刚需。而斐讯N1盒子凭借其出色的硬件配置和极低的功耗&#xff0c;成为了DIY玩家眼中的"宝…...

Qwerty Learner:终极打字练习与单词记忆完全指南

Qwerty Learner&#xff1a;终极打字练习与单词记忆完全指南 【免费下载链接】qwerty-learner 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers 项目地址: https://gitcode.…...

终极RPG Maker视差地图插件指南:零代码打造专业级游戏场景

终极RPG Maker视差地图插件指南&#xff1a;零代码打造专业级游戏场景 【免费下载链接】RPGMakerMV RPGツクールMV、MZで動作するプラグインです。 项目地址: https://gitcode.com/gh_mirrors/rp/RPGMakerMV 你是否曾经梦想创建拥有电影级视觉效果的RPG游戏地图&#xf…...

在Matlab中绘制圆锥三维曲面图

这篇博文按参考书绘制圆锥三维曲面图&#xff0c;是在“在Matlab中绘制圆锥三维曲面图”的基础上&#xff0c;调整Z的表达式得到的。已知&#xff1a;z(x^2y^2)^(1/2)。要求&#xff1a;绘制[-20&#xff0c;20]区间的曲面图。在matlab命令行窗口输入以下程序&#xff1a;x-20:…...

云主机/虚拟机迁移后必看:避开dracut紧急模式,搞定grub2和initramfs引导修复

云主机迁移实战指南&#xff1a;彻底解决GRUB2与initramfs引导故障 当一台云主机或虚拟机从原有环境迁移到新平台时&#xff0c;最令人头疼的莫过于启动时突然陷入dracut紧急模式的黑色深渊。屏幕上一行行红色错误提示仿佛在嘲笑你的无能为力——这场景对于经历过跨云平台迁移…...