mysql 查询的一般思路

能用单表优先用单表,即便是需要用group by、order by、limit等,效率一般也比多表高

不能用单表时优先用连接,连接是SQL中非常强大的用法,小表驱动大表+建立合适索引+合理运用连接条件,基本上连接可以解决绝大部分问题。但join级数不宜过多,毕竟是一个接近指数级增长的关联效果

能不用子查询、笛卡尔积尽量不用,虽然很多情况下MySQL优化器会将其优化成连接方式的执行过程,但效率仍然难以保证

自定义变量在复杂SQL实现中会很有用,例如LeetCode中困难级别的数据库题目很多都需要借助自定义变量实现

如果MySQL版本允许,某些带聚合功能的查询需求应用窗口函数是一个最优选择。除了经典的获取3种排名信息,还有聚合函数、向前向后取值、百分位等

相关推荐
m0_617881422 分钟前
如何优雅处理SQL存储过程异常_使用TRY-CATCH块机制
jvm·数据库·python
步辞2 分钟前
如何用SQL实现分组内前N个百分比筛选_窗口函数应用
jvm·数据库·python
m0_684501982 分钟前
PySpark中高效展开嵌套数组:避免笛卡尔爆炸的正确实践
jvm·数据库·python
zdzx auvu3 分钟前
MySQL 函数
数据库·mysql
qq_372906935 分钟前
Layui如何实现表格内部的图片点击后进入相册轮播模式
jvm·数据库·python
趙卋傑7 分钟前
如何安装多个版本的MySQL
数据库·mysql
四维迁跃7 分钟前
SQL如何优化子查询的性能_改写为JOIN关联查询与消除嵌套
jvm·数据库·python
HalvmånEver7 分钟前
MySQL表的约束(一)
数据库·mysql
djjdjdjdjjdj7 分钟前
Layui上传组件upload怎么监听大文件上传的百分比进度条
jvm·数据库·python
Polar__Star9 分钟前
如何用 bubbles 参数让自定义事件支持在 DOM 树中冒泡
jvm·数据库·python