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

秋招Day14 - MySQL - 场景题

如何查找一个student表中每个班年龄排名在前两名的所有人?

年龄排名前两名,比如一个班的人中的年龄有19 18 17,19和18是最大的两个年龄,但是会有很多人同岁。

SELECT a.class, a.name, a.ageFROM students AS aWHERE (SELECT COUNT(DISTINCT age)FROM student AS bWHERE b.class = a.class AND b.age > a.age                ) < 2ORDER BY a.class, a.age;

子查询同一个班中的所有大于a.age的年龄数字,如果这个数字小于2,就说明a是可以的

两个表,一个表1000W数据,另一个表只有几千数据,要做一个关联查询,如何优化?

为关联字段建立索引

小表驱动大表:根据小表的字段值,利用大表的索引快速定位数据

对于一个新建表,先插数据还是先建索引效率高?

如果要插入的数据量很大,先插数据再建索引效率高,因为每次插入数据也要同时更新索引,可能会造成频繁的页分裂索引结构调整,引入性能开销

小批量插入可以先建索引

什么是深分页?select * from tbn limit 10000000, 10这个语句有什么问题?

深分页是指随着页号越来越大,比较靠后的页面的offset也随之变大,导致需要从头扫描并跳过的数据行越来越多,有严重的性能问题。

延迟关联:可以先在子查询中借助主键索引查出页面的开头,然后开始查找页面中的元素

或者可以用书签,记住上一次分页的最大主键id

一个学生成绩表,求每个班的前十名

窗口函数ROW_NUMBER()为每一行打编号

PARTITION BY class类似于GROUP BY但是行数不减少

ORDER BY score按照成绩排序

SELECT student_name, class, score, rn
FROM (SELECT student_name, class, score,ROW_NUMBER() OVER (PARTITION BY class ORDER BY score DESC) AS rnFROM student_scores
) AS tmp
WHERE rn <= 10;
http://www.lqws.cn/news/501859.html

相关文章:

  • 3D看房实现房屋的切换
  • 基于目标驱动的分布式敏捷开发
  • 使用ffmpeg根据时间戳自动截取音频
  • 集成 Odoo、n8n 与 Dify,实现智能业务流程自动化
  • 《AI大模型应用技术开发工程师》学习总结
  • 工作流会使用到Webhook是什么
  • ArkTS与仓颉开发语言:鸿蒙编程的双子星
  • MySQL深分页性能瓶颈:问题分析与解决方案
  • Leetcode 3588. Find Maximum Area of a Triangle
  • 做上门私厨/上门做饭App小程序,到底是定制开发,还是选成品系统?
  • 开源跨平台的轻量 C# 编辑器
  • 软件设计模式_期末复习
  • 时序数据库IoTDB可实现的基本操作及命令汇总
  • Idea新UI
  • C++ 运行、编译和链接基础内容
  • gRPC在Windows DLL构建中的问题与现状
  • 云电脑,“死”于AI时代前夕 | 数智化观察
  • 麒麟V10操作系统离线安装Docker、Docker compose和1Panel
  • docker部署nginx
  • .NET 生态中主流的前后端生产级框架
  • 鸿蒙应用开发中的状态管理:深入解析AppStorage与LocalStorage
  • Hadoop RPC 分层设计的哲学:高内聚、低耦合的最佳实践
  • STM32[笔记]--4.嵌入式硬件基础
  • 华为云Flexus+DeepSeek征文 | 华为云MaaS平台上的智能客服Agent开发:多渠道融合应用案例
  • 多模态+类人认知:Embodied AI迈向AGI的三大瓶颈与突破路径
  • Spring Ai Alibaba Graph实现五大工作流模式
  • FPGA基础 -- Verilog 验证平台之 **cocotb 验证 `阶乘计算模块(factorial)` 的例子**
  • 【AI大模型】Spring AI 基于Redis实现对话持久存储详解
  • 报错:macOS 安装 sentencepiece
  • Sui 随全球加速采用,正式启用雅典 SuiHub 创新中心