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

单表查询-分析函数的应用

1、问题

最近遇到一个有趣的优化问题,本身的需求是统计每个人超过他自己分数的人数,并显示自身分数情况。
于是开发商就把当前的需求直译成如下sql
select a.,(select count(1) from test0824 b where a.score>b.score) as cnt,rownum rn from test0824 a
order by score desc
在这里插入图片描述这样的语句主查询越大,即(test0824表数据量越大)查询越慢,这里相当于每次主查询查出一条数据,就要和子查询比较a.score>b.score,子查询有多少条数据就比较多少次,实际上的效率就是主查询条数
子查询数据量,可以说效率低下
那怎么办呢?

2、需求

这个需求到底是什么意思,实际上就是分数排名,这里我们可以用到rank()over()进行处理

3 、优化改写

select a.*,rank()over(order by score desc)-1 as cnt,rownum rn from test0824 a
order by SCORE asc
在这里插入图片描述
执行时间:
在这里插入图片描述

排完序后减1就是计算超过分数的人数。查询性能提升几倍以上
在这里插入图片描述

4、小结

(1)优化的思路其实就是减少比较次数即扫描表的次数。
(2)当拿到一个需求,应该合理分析需求,寻求更快地效率去实现,而非直译。

http://www.dtcms.com/a/348948.html

相关文章:

  • 智能体之推理引擎(3)
  • 记一次使用 C++ 实现多种扑克牌逻辑
  • ptrade `get_fundamentals` - 获取财务数据
  • 58 C++ 现代C++编程艺术7-模板友元
  • VC2022连接mysql
  • 微服务-21.网关路由-路由属性
  • 2025年KBS SCI1区TOP,新颖奖励与ε-贪婪衰减Q-learning算法+局部移动机器人路径规划,深度解析+性能实测
  • AI基础学习周报十
  • AI产品经理面试宝典第74天:技术边界与商业闭环的面试问题与答法
  • Trip Footprint_旅行分享功能模块技术架构天气模块技术架构
  • COSMIC智能化编写工具:革命性提升软件文档生成效率
  • 【文献阅读】Land degradation drivers of anthropogenic sand and dust storms
  • docker安装及常用命令
  • 卷王问卷考试系统—测试报告
  • 不只是关键词匹配:AI如何像人类一样‘听懂‘你在说什么
  • 【电路笔记 通信】混频器+混频器芯片(FSK/ASK收发器IC超外插接收器IC)+外差接收机 超外差接收机
  • Html相关
  • hot100 之104-二叉树的最大深度(递归+二叉树)
  • 分治--常见面试问题
  • 协程解决了什么问题
  • 中级统计师-统计实务-第一章 综述
  • CPTS-Agile (Werkzeug / Flask Debug)
  • 服务器加密算法
  • HMM+viterbi学习
  • Trip Footprint旅行足迹App
  • Windows在资源管理器地址栏输入CMD没反应
  • MATLAB 数值计算进阶:微分方程求解与矩阵运算高效方法
  • 伯朗特功率分析仪通过Modbus转Profinet网关与工业以太网集成案例
  • RunningHub - 基于ComfyUI的云端AI创作与应用平台
  • PID控制器的原理以及PID控制仿真