sql查询慢的一种优化思路:尝试将多表查询转为单表查询

背景

接到一个报表优化的需求,该sql inner join了两张表,主表中数据大概是三千万,经测试,查询2023-07-01这一天的数据需要12秒,查询2023-07-01~2023-07-31 却只需要1.1秒,查询2024-07-01需要20分钟,查询速度极其不稳定。如果单独查主表 where里面写死查询条件,需要0.28秒

解决办法

该sql改为单表查询,通过group的方式进行分组,减少报表所需要处理的数据量,然后将原本的关联表在报表中进行过滤或者字典翻译达到以前的效果

总结

当数据量大查询慢时,可以尝试下单表查的速度,如果单表查速度很快,那就想想现在的这个功能能不能改为单表查后通过Java代码或者其他对数据库返回的结果集进行筛选。

吐槽

看很多面试题呀,或者什么别人分享的方法啊,都是在找数据库的问题,以及索引是否失效啊。有些时候也要想想是不是自己的sql写的有问题,既然单表查的时候数据库性能这么好,那我们就想想能不能将业务转为单表查,然后拼接

而外收获

排查这个问题时,知道了Oracle 的hint,用来提高查询效率,附讲解链接
https://blog.csdn.net/qq_40588579/article/details/103085575

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

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

相关文章

Ubuntu安装PostgreSQL

Ubuntu(在线版) 更新软件源 sudo apt-get update 添加PostgreSQL官方数字签名 wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - 将地址添加到系统的软件包源列表中 echo "deb http://apt.postgresql.org/pub/repos/a…

MySQL数据库-Windows部署MySQL环境

Windows部署MySQL环境​​​​​​ 一、下载mysql数据库 进入MySQL官方网站(MySQL :: MySQL DownloadsMySQL),随后按如下红框方式操作: ​ ​ ​ ​ 这里选择的是离线安装,第一个是在线安装 下载好安装包后开始…

基于Springboot的智慧养老中心管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Springboot的智慧养老中心管理系统,…

重启技术博客记录的第一篇文章

在完成八个月的实习,准备毕业设计,经历一段断断续续的接活,和其他人讨论,帮助他人完善项目的阶段后,我终于准备重启自己的技术博客去记录日常,分享我所取得的一些经验。 这一年我经历了很多,眼…

YUM——简介、安装(Ubuntu22.04)

1、简介 YUM(Yellowdog Updater, Modified)是一个开源的命令行软件包管理工具,主要用于基于 RPM 包管理系统的 Linux 发行版,如 CentOS、Red Hat Enterprise Linux (RHEL) 和 Fedora。YUM 使用户能够轻松地安装、更新、删除和管理…

Linux 账号安全管理及应用

一、账号安全控制 1.系统账号清理 1.1 将非登录用户设置为无法登录 usermod -s /etc/nologin pkm #将名为pkm 用户的shell设为/sbin/nologin 用户 pkm 将无法登录 1.2 锁定长期不使用的账号 usermod -L 用户名 #锁定用户账号密码 usermod -U …

【C】Structure

参考摘抄学习来自: C 结构体C语言必学知识点 "结构体"详细解析!C 语言之结构体最全面总结C typedef 文章目录 1 定义2 初始化3 结构体大小的计算4 访问结构成员5 结构作为函数参数6 指向结构的指针7 结构体数组8 动态申请结构体 1 定义 它允…

导入的Docker 镜像无名称和标签问题

解决办法 第一种 重命名 docker tag [镜像id] [新镜像名称]:[新镜像标签]第二种 规范导出 docker save -o xxxx.tar [镜像名称]:[镜像标签]使用镜像ID打包的话导致解压的出来的镜像没有名字

RFID电子锁在物流货运智能锁控管理的创新方案

物流货运锁控的现实挑战 易损性:传统锁具易受物理破坏,无法抵御恶意撬锁。 低效率:依赖人工操作,开锁速度慢,影响作业效率。 高成本:钥匙的制作、管理和丢失替换成本高昂。 监控缺陷:缺乏实…

深入理解Java的面向对象编程

1. 什么是面向对象编程(OOP)? 面向对象编程是一种编程范式,它将程序中的数据与操作数据的方法组织为对象。每个对象都可以接收消息、处理数据以及发送消息给其他对象。在Java中,每个对象都是一个类的实例。 2. 核心概…

保障信息资产:ISO 27001信息安全管理体系的重要性

在当今数字化和全球化的时代,信息安全已经成为企业成功和持续发展的关键因素之一。随着信息技术的快速发展和互联网的普及,企业面临着越来越多的信息安全威胁和挑战,如数据泄露、网络攻击、恶意软件等。为了有效应对这些威胁,企业…

智能升级,监控无界——全新安全生产生态算法一体机上线

安全生产生态算法一体机 安全生产生态算法一体机是万物纵横推出的一款AI算法软硬一体生态产品,重点面向安全生产领域,采用BM1684强劲AI芯片,内置安全生产场景所需的多种专用AI算法,面向各场景的人员监控、规范作业、异常检测等应…

实现ubuntu的任务计划反弹shell

1.实验目的 使用Ubuntu定时任务反弹shell 2实验环境 ubuntu:ip地址:192.168.80.133 kali:ip地址:192.168.80.134 3.编写crontab计划任务 在ubuntu的系统中使用crontab -e命令编写计划任务 作用:是将一个交互式的…

Mysql 左关联(LEFT JOIN)

在左关联(LEFT JOIN)操作中,关于大表和小表的连接顺序,通常建议将小表放在前面,大表放在后面。这种安排方式有助于提高查询效率,原因如下: 扫描效率:在SQL查询中,尤其是…

Java 乐观锁与悲观锁

1. 前言 本节内容主要是对 Java 乐观锁与悲观锁进行更加深入的讲解,本节内容更加偏重于对乐观锁的讲解,因为 synchronized 悲观锁对于大部分学习者并不陌生,本节主要内容如下: 乐观锁与悲观锁的概念,之前有所讲解,这里用很小的篇幅进行知识的回顾,巩固;乐观锁与悲观锁…

Vue +Echarts 二维数组获取最大值和最小值以及索引

实现图例效果 获取最大值方法&#xff1a; maxSecond(array) {let max Number.MIN_SAFE_INTEGER;for (let i 0; i < array.length; i) {const secondElement parseInt(array[i][1]);if (secondElement > max) {max secondElement;}}return max;}, 获取最大值索引&…

【高性能服务器】select模型

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 IO多路复用就是复用…

ES 嵌套查询

背景 一个配方由多种原材料组成&#xff0c;需求是根据各种原材料的用量搜索出对应的配方 配方实体类 class Formula {private long id;private String name;private List<Material> materials;}class Material {JsonProperty("material_id")private long m…

认识不-物联网“六域模型”有哪些有什么作用

如下参考源于苏州稳联授权可见认知域-感知域-网络域-应用域-管理域-安全域-物联网六域模型 苏州稳联 (iotrouter.cn) 认识物联网“六域模型”&#xff1a;构成与作用 “六域模型”是一个有效的框架。这个模型通过将物联网划分为六个相互关联的域&#xff0c;帮助我们更好地理…

论文学习_Critical Variable Guided Mutation for Directed Greybox Fuzzing

1. 引言 研究背景:软件漏洞的出现可能会带来严重的安全隐患,因此对程序进行安全测试非常重要。在程序的数千行代码中,新提交的代码更容易引入漏洞,因为这些代码通常是为了功能升级或 bug 修复而添加的。现有的基于覆盖率的模糊测试方法虽然在发现真实世界软件系统中的安全…