SQL数据库性能优化
- 1.查询尽量避免使用select *
- 1.1 增加磁盘开销:数据库本质上是将记录存储在磁盘上,查询操作就是一种进行磁盘IO的行为,我们查询的字段越多,读取的内容也就越多,对IO磁盘的开销也就会增大,特别是某些字段,如TEXT、MEDIUMTEXT或者BLOB等类型,磁盘IO开销增加会更加明显
- 1.2 加重网络时延:数据每次都通过socket send buffer发送到客户端,查询一次数据量不大,如果一旦有人使用*将TEXT、MEDIUMTEXT或者BLOB 类型查出来,数据量会成指数级上升,网络传输的次数会增加,时间也就会增加
- 1.3 无法使用覆盖索引:
- 1.4 多表联合查询会变慢
- 2.union all代替union
-
unionunionunion: 对两个结果集进行并集操作, 不包括重复行,相当于distinct排重, 同时进行默认规则的排序;
-
union all: 对两个结果集进行并集操作, 包括重复行, 结果全部显示, 不管是不是重复;
-
因此union all会比union多一个排除重复数据的操作,排除重复数据需要遍历,排序和比较,耗时和CPU资源
-
- 3.小表驱动大表(用小的数据集去驱动(可理解为匹配)大的数据集)
- in子查询:in适用于左边大表,右边小表(优先执行in里面的子查询语句,然后再执行外面的语句),in中值太多导致查询变慢
- exists条件筛选:exists适用于左边小表,右边大表(优先查询主查询语句,再匹配exists条件)
- in子查询:in适用于左边大表,右边小表(优先执行in里面的子查询语句,然后再执行外面的语句),in中值太多导致查询变慢
- 4.数据库的批量操作(批量插入、批量更新)
- 每次插入一条数据,使用循环插入多条数据,需要多次请求数据库,会消耗更多性能
- 一次插入多条数据,如果数据太多,数据库响应也会很慢,建议批数据控制在500条以内
- 5.多用limit(高效的分页)
- SELECT TOP 10 * FROM (SQL语句) AS T ORDER BY ID ASC
- 6.增量查询
- 全量查询是你要查询一个数据,你需要输入完整的数据字符然后按回车程序才开始查询,而增量查询只要你输入此数据的第一个字符或字母,程序就将自动查询到它并使之高亮度显示,等待你的选择
- 7.用连接查询代替子查询
- 使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率的连接(JOIN).. 替代
- join表的数量不应该超过3个
- left join关联时,左边要用小表,右边可以用大表,能用inner join的地方,尽量少用left join
- 8.控制索引的数量
- 索引能够显著的提升查询sql的性能,但索引数量并非越多越好,因为表中新增数据时,需要同时为它创建索引,而索引是需要额为的存储空间的,而且还会有一定的性能消耗。单表索引数量应该控制在5个以内。
- 如果系统并发量不高,表中的数据量也不多,超过5个也可以,不要超过太多就行。
- 对于高并发的系统,单表索引数不要超过5个。能建联合索引,就不要建单个索引。可以将部分查询功能迁移到其他类型的数据库中(???),比如:Elastic Search,HBase等,在业务表中只需要建几个关键索引即可。
- 9.选择合理的字段类型
- 能用数字类型就不要字符串,字符处理往往比数字要慢
- 尽可能使用小的类型,比如,用bit存布尔值,用tinyint存枚举值等。长度固定的字符串字段,用char类型,长度可变的字符串字段,用varchar类型。金额字段用decimal,避免精度丢失问题……
- 10.提升group by 的效率
- 使用分组时,先缩小数据范围,再进行分组
相关文章:
SQL数据库性能优化
1.查询尽量避免使用select * 1.1 增加磁盘开销:数据库本质上是将记录存储在磁盘上,查询操作就是一种进行磁盘IO的行为,我们查询的字段越多,读取的内容也就越多,对IO磁盘的开销也就会增大,特别是某些字段,如…...
eNSP学习——RIP路由协议基础配置
目录 主要命令 原理概述 实验内容 实验目的 实验拓扑 实验编址 实验步骤 1、基本配置 2、使用RIPv1搭建网络 开启 RIP调试功能 3、使用RIPv2搭建网络 RIPv1和RIPv2的不同 需要eNSP各种配置命令的点击链接自取:华为eNSP各种设备配置命令大全PD…...
备考系统架构设计师,看这篇就够了!(包括核心总结、真题、论文、模拟试题索引)
注:以下章节核心总结来自最新版课本:系统架构设计师教程(第2版): https://url35.ctfile.com/f/52515535-1268514286-ca9b3a?p6235 ( 访问密码: 6235, 电子版 pdf 文件大小: 168.9 M ,需要的话可自行下载,…...
stm32编译原理
STM32编译原理主要包括以下几个方面: (1)编译器选择:STM32可以使用多种编译器进行开发,如Keil、IAR、GCC等。不同的编译器有不同的特点和优缺点,需要根据具体需求进行选择。 (2)编…...
如何以JNI方式实现安卓APP控制GPIO?
本文档提供了在 Android 10 设备上通过应用程序(App)控制通用输入输出(GPIO)的详细指南。这涵盖了从创建 gpio驱动到App 配置 以及 SELinux 策略以允许特定访问的所有必要步骤。 1. 驱动实现 添加创建gpio控制驱动bsp\kernel\ke…...
计算机网络学习笔记——运输层(b站)
目录 一、 运输层概述 二、运输层端口号、复用与分用的概念 三、UDP和TCP的对比 四、TCP的流量控制 五、TCP的拥塞控制 六、TCP超时重传时间的选择 七、TCP可靠传输的实现 八、TCP报文段的首部格式 一、 运输层概述 物理层、数据链路层、网络层实现了主机到主机的通信…...
HBase数据库面试知识点:第二部分 - 核心技术(持续更新中)
目录 1. 分布式存储与HDFS 2. 面向列的存储 3. 数据版本控制 4. Region与RegionServer 5. 分布式协调服务(ZooKeeper) 1. 分布式存储与HDFS HBase利用Hadoop的HDFS作为其底层存储系统,确保数据的高可靠性和可扩展性。 数据块࿰…...
Spring 使用SSE(Server-Sent Events)学习
什么是SSE SSE 即服务器发送事件(Server-Sent Events),是一种服务器推送技术,允许服务器在客户端建立连接后,主动向客户端推送数据。 SSE 基于 HTTP 协议,使用简单,具有轻量级、实时性和断线重…...
词法分析器的设计与实现--编译原理操作步骤,1、你的算法工作流程图; 2、你的函数流程图;3,具体代码
实验原理: 词法分析是编译程序进行编译时第一个要进行的任务,主要是对源程序进行编译预处理之后,对整个源程序进行分解,分解成一个个单词,这些单词有且只有五类,分别时标识符、关键字(保留字&a…...
linux查看磁盘类型命令
在Linux中,有多种方法可以查看磁盘是固态硬盘(SSD)还是机械硬盘(HDD)。以下是一些常用的方法: 查看/sys/block/目录 /sys/block/目录包含了系统中所有块设备的信息。你可以查看这个目录中的设备属性来判断…...
多线程调用同一个不包含可变状态,并且是线程安全的方法时,可同时执行,不必等待排队
多线程调用同一个不包含可变状态,并且是线程安全的方法时,可同时执行,不必等待排队 前言同时执行方法的条件示例并发执行的优势实验验证总结 前言 如果方法不包含可变状态,并且是线程安全的,那么在高并发环境下&#…...
Java文件操作①——XML文件的读取
系列文章目录 文章目录 系列文章目录前言一、邂逅XML二、应用 DOM 方式解析 XML三、应用 SAX 方式解析 XML四、应用 DOM4J 及 JDOM 方式解析 XMLJDOM 方式解析 XMLDOM4J 方式解析 XML前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。…...
【记录】网络|没有路由器没有网线,分别使用手机或Windows电脑共享网络给ARM64开发板,应急连接
事情是这样的,我的开发板明明已经选择了记住热点 WiFi 密码,但是却没有在开机的时候自动连接,我又没有放显示器在身边,又不想为了这点事去找个显示器来,就非常难受。 我手边有的设备是: 笔记本电脑&#…...
一键设置常用纸张和页面边距-Word插件-大珩助手
Word大珩助手是一款功能丰富的Office Word插件,旨在提高用户在处理文档时的效率。它具有多种实用的功能,能够帮助用户轻松修改、优化和管理Word文件,从而打造出专业而精美的文档。 【新功能】常用纸张和常用边距 1、一键设定符合中国人常用…...
在树莓派3B+中下载opencv(遇到的各种问题及解决)
目录 前言 1、删除原版本下新版本 2、python虚拟环境 3、python版本共存换链接——给版本降低 4、烧录之前版本的文件(在清华源中可以找,不用官网的烧录文件就行; 比如:(balenaEtcher)重新烧录有问题…...
精准检测,安全无忧:安全阀检测实践指南
安全阀作为一种重要的安全装置,在各类工业系统和设备中发挥着举足轻重的作用。 它通过自动控制内部压力,有效防止因压力过高而引发的设备损坏和事故风险,因此,对安全阀进行定期检测,确保其性能完好、工作可靠…...
Transformer系列:图文详解KV-Cache,解码器推理加速优化
前言 KV-Cache是一种加速Transformer推理的策略,几乎所有自回归模型都内置了KV-Cache,理解KV-Cache有助于更深刻地认识Transformer中注意力机制的工作方式。 自回归推理过程知识准备 自回归模型采用shift-right的训练方式,用前文预测下一个…...
基础篇03——SQL约束
概述 约束示例 完成以下案例: create table user (id int primary key auto_increment comment 主键,name varchar(10) not null unique comment 姓名,age tinyint unsigned check ( age > 0 and age < 120 ) comment 年龄,status char(1) default 1 commen…...
人工智能--深度神经网络
目录 🍉引言 🍉深度神经网络的基本概念 🍈神经网络的起源 🍍 神经网络的基本结构 🍉深度神经网络的结构 🍈 卷积神经网络(CNN) 🍈循环神经网络(RNN&…...
VOC格式标签各个字段的解释
想了解一下VOC格式数据标签各个字段的含义,搜了一圈没看到,懒得去官网了,直接问了GPT-4o,以下回答字段解析来自GPT-4o,例子我自己写的 VOC (Visual Object Classes) 数据标签格式主要用于目标检测任务。VOC格式的标签…...
2024年端午节放假通知
致尊敬的客户以及全体同仁: 2024年端午节将至,根据国务院办公厅通知精神,结合公司的实际情况,现将放假事宜通知如下: 2024年6月8日(星期六)至6月10日(星期一)ÿ…...
Transformer系列:注意力机制的优化,MQA和GQA原理简述
前言 多查询注意力(MQA)、分组查询注意力(GQA)是Transformer中多头注意力(MHA)的变种,它们大幅提高了解码器的推理效率,在LLaMA-2,ChatGLM2等大模型中有广泛使用,本篇介绍MQA、GQA的原理并分析其源码实现。 使用MQA,G…...
Python知识点11---高阶函数
提前说一点:如果你是专注于Python开发,那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了,而如果你和作者一样只是操作其他技术的Python API那就足够了。 本篇介绍一下Python的内置函数也叫高阶函数,就是Python自…...
JavaSE——【逻辑控制】(习题)
一、分支结构 2.1 if 语句 【练习】2.1.1 小明,如果这次考到90分以上,给你奖励一个大鸡腿,否则奖你一个大嘴巴子 int score 92;if(score > 90){System.out.println("吃个大鸡腿!!!");}else{System.out.println("挨大嘴…...
自动驾驶仿真:python和carsim联合仿真案例
文章目录 前言一、Carsim官方案例二、Carsim配置1、车辆模型2、procedure配置3、Run Control配置 三、python编写四、运行carsim五、运行python总结 前言 carsim内部有许多相关联合仿真的demo,simulink、labview等等都有涉及,这里简单介绍下python和car…...
Qt报错:libvlc开发的程序,出现Direct3D output全屏窗口
问题描述: 在qt中开发重播模块时,第一次在窗口正常播放,点击重播按钮后会弹出新的Direct3D output窗口播放视频 分析: 因为libvlc_media_player_set_hwnd 这个函数 设置了不存在的窗口句柄,导致vlc视频播放窗口没有嵌…...
yolov5的口罩识别系统+GUI界面 (附代码)
基于YOLOv5模型的口罩识别系统,结合了GUI界面,旨在帮助用户快速、准确地识别图像或视频中佩戴口罩的情况。YOLOv5是一种流行的目标检测模型,具有高效的实时检测能力,而GUI界面则提供了友好的用户交互界面,使得整个系统…...
WPF中Window的外观实现及常用属性
文章目录 1. 概要2. Window的外观2.1 Window的外观组成2.2 Window的实现2.3 Window外观配置2.4 Window 的其他常用属性1. AllowsTransparency 2. WindowStartupLocation3. ShowInTaskbar4. ShowActivated5. SizeToContent6. Topmost7. WindowStyle 1. 概要 和 Android 类似, W…...
(有代码示例)Vue 或 JavaScript中使用全局通信的3种方式
在 Vue 或 JavaScript 应用中,可以使用以下库来实现全局事件通信: Vue.js 中的 EventBus: 在 Vue.js 中,可以使用 EventBus 来实现全局事件通信。EventBus 是一个 Vue 实例,用于在组件之间传递事件。你可以使用 $on、…...
MAB规范(1):概览介绍
前言 MATLAB的MAAB(MathWorks Automotive Advisory Board)建模规范是一套由MathWorks主导的建模指南,旨在提高基于Simulink和Stateflow进行建模的代码质量、可读性、可维护性和可重用性。这些规范最初是由汽车行业的主要厂商共同制定的&…...
免费发布推广的平台有哪些/百度seo排名工具
基于Paddle的智慧交通预测系统 项目总结 随着深度学习在近几年的快速发展,智慧交通出现许多不同方面应用,如车牌识别、交通标志检测与识别及综合应用的行人分析系统等。 本项目分为三部分,分别是交通流量预测、车牌识别、车辆检测等&#x…...
网站选项卡/公司员工培训内容有哪些
方法一:进入Apple Watch的设置取消1、输入密码解锁,激活屏幕,轻按Digital Crown表冠,进入App图标矩阵;2、轻点【设置】的图标,进入【设置】>【通用】>【还原】;3、选择【抹掉所有内容和设…...
网站建设流程步骤怎么样/竞价排名的优缺点
NET使用ABP框架搭建博客项目(一) 有很多学NET开发的小伙伴建项目都比较茫然,我用什么开发?我都使用什么框架?我怎么起名字?种种问题,让一些低等、中等的工程师(甚至是高级工程师&am…...
哪个公司做网站好 知乎/聚名网域名
首先参考博客 搭建SpringCloudAlibaba小项目:https://blog.csdn.net/m0_37607945/article/details/107705904 以下采用上面博客中的spring-cloud-alibaba-consumer项目进行讲解 在项目中引入依赖 <dependency><groupId>com.alibaba.cloud</groupId…...
wordpress内存占用优化/网络营销的几种模式
引用计数法: 在对象中添加一个引用计数器,当有地方引用对象的时候,引用计数器的值就+1 ,当引用失效的时候计数器的值就 -1 打印垃圾回收的参数 -verbose:gc -XX: PrintGCDetail 使用程序模拟下图的 对象引用来测试 …...
wap建站软件/地推团队联系方式
所谓函数,就是为我们提供某种功能的程序。比如我们在入门第一课讲到的print,可以帮我们打印,这个print就是Python内置的一个函数。 下面来一起熟悉一下Python内置的函数及用法。 使用函数时,后面都是加一对圆括号,用来…...