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

SQL优化,关联查询非常慢,前台页面控件卡顿

问题情况:可以看到发起一次8s,sql关联表比较多(历史包袱),其中一个表数据量:1172410

问题分析、原sql:基层数据含union部分,外关联了这张1百万数据表

检查各个表索引都是有的,查询始终都是8s,同样的查询逻辑每次查询都是8s,表象是没走数据库缓存

看着是有缓存的,执行计划太多(SQL文本差异、执行计划变化、子游标问题),这是一个问题

SQL优化:思路,先分页后再进行关联查询,这样不会全扫描大表(注意ROWNUM)

这样执行基本达到1s左右,但是存在分页问题,无法按照排序分页,逻辑是ROW_NUMBER()分页

这里的ROWNUM <= 40会先随机获取40条记录,然后再对这40条记录排序并分配ROW_NUMBER,这不是正确的分页逻辑

ROWNUM与ROW_NUMBER()分页的区别

关键区别

  1. 执行顺序不同

    • ROWNUM是在查询结果返回前分配的伪列,它在数据过滤后、排序前就确定了

    • ROW_NUMBER()是在排序完成后分配的序号

所以使用ROW_NUMBER后又多了2s,目前测试差2s区别

还有一种写法:Oracle 12c+的FETCH语法(最简洁高效),可惜不是12的版本

最后改造后sql:退而求其次了只能,一步一步让系统走向高效

不过整体比之前快了一倍,

http://www.xdnf.cn/news/2523.html

相关文章:

  • 使用 Playwright 构建高效爬虫:原理、实战与最佳实践
  • 大模型应用实战:深入理解模型上下文协议 MCP
  • Linux-UDP套接字编程
  • 小结: DHCP
  • 【SpringMVC】概念引入与连接
  • Spark-Streaming2
  • 深入解析Vue.js:构建现代Web应用的高效之道
  • BIOES 标签的含义
  • 三分钟音乐社:8、构建(自然)大调的音阶
  • 【嵌入式系统设计师(软考中级)】第二章:嵌入式系统硬件基础知识——④定时器计数器和系统总线及通信接口
  • 全面解析Java(上)------多线程编程:从线程生命周期到并发机制的深度剖析与实践指南
  • 组件的基本知识
  • 力扣hot100,739每日温度(单调栈)详解
  • 【Spring Boot】Maven中引入 springboot 相关依赖的方式
  • linux
  • Maven 使用教程
  • C语言复习笔记--内存函数
  • 土壤有机质含量
  • adb常用的20个命令
  • java_基础Java 转义字符学习笔记
  • Top-k问题的解法
  • 在线重定义——分区表改造
  • 收藏按钮变色问题
  • 18.电源滤波器的量化选型方法
  • IP地址如何切换到国内别的省份?一步步指导
  • 蓝桥杯 11. 打印大X
  • 设计模式每日硬核训练 Day 16:责任链模式(Chain of Responsibility Pattern)完整讲解与实战应用
  • 从零到精通:深入剖析GoFrame的gcache模块及其在项目中的实战应用
  • 实现 Babylon.js 鼠标输入管理单例 (MouseController) 的最佳实践
  • WebGIS面试题目整合资料