SQL语句中WITH语句的使用

简介: SQL语句中WITH语句的使用

WITH语句可能大家平时用的不多,第一次接触也是因为sql性能问题,做改造的时候在网上查到的,首先介绍一下这个语句的语法:

WITH custom_name AS (

   -- 查表语句

)

-- 接下来的SQL语句可以引用custom_name作为一个临时表或视图

 

例如:

WITH table_2 AS (

   SELECT id,name, SUM(money) AS totalmoney

   FROM table_1

   GROUP BY name

)

SELECT name, totalmoney

FROM table_2

WHERE totalmoney> 1000;

 

理解起来还是比较好理解,就是把查询结果集重新使用一个名字定义一下,然后去使用这个重新定义的名字执行进一步的查询,可以理解为中间结果集的概念。

 

WITH语句主要有以下几个作用:

 

1、代码重用:通过WITH语句,可以将一个复杂的查询拆分成多个简单的部分,每个部分都可以使用WITH语句创建临时的结果集。然后,后续的查询可以引用这些临时结果集,从而提高代码的可读性和维护性。

 

2、递归查询:WITH语句还支持递归查询。在递归查询中,WITH语句定义了一个初始的结果集,并通过逐步迭代地引用自身来构建更大的结果集,直到满足特定的终止条件为止。递归查询通常用于处理树形结构或层次结构的数据。

 

3、优化性能:在某些情况下,使用WITH语句可以带来性能优势。数据库管理系统可以对WITH语句进行优化,执行计划中可能会重用临时结果集,避免重复计算相同的子查询,从而提高查询性能。

 

4、逻辑清晰:使用WITH语句可以将复杂的查询逻辑拆分成简单的部分,使得查询语句的结构更加清晰,容易理解和维护。

 

在业务开发中使用的场景是递归查询一个机构的子机构,然后将所有子机构作为关联表,查询人员或者业务数据。还有一个场景就是将复杂的查询拆分成几个子查询,提升性能。

目录
相关文章
|
消息中间件 存储 监控
后端接口性能优化分析-多线程优化(上)
后端接口性能优化分析-多线程优化
642 0
|
存储 负载均衡 算法
什么是Minio?如何搭建Minio集群?
MinIO 是高性能的对象存储,是为海量数据存储、人工智能、大数据分析而设计的,它完全兼容Amazon S3接口,单个对象最大可达5TB,适合存储海量图片、视频、日志文件、备份数据和容器/虚拟机镜像等。MinIO主要采用Golang语言实现,,客户端与存储服务器之间采用http/https通信协议。
3631 0
什么是Minio?如何搭建Minio集群?
|
SQL 存储 分布式计算
Hive数据仓库设计与优化策略:面试经验与必备知识点解析
本文深入探讨了Hive数据仓库设计原则(分区、分桶、存储格式选择)与优化策略(SQL优化、内置优化器、统计信息、配置参数调整),并分享了面试经验及常见问题,如Hive与RDBMS的区别、实际项目应用和与其他组件的集成。通过代码样例,帮助读者掌握Hive核心技术,为面试做好充分准备。
1777 0
|
前端开发 Serverless UED
iconfont渐变色实现方案总结
iconfont渐变色实现方案总结
1315 0
|
人工智能 API 开发工具
DIFY的安装以及API配置教程
本指南详解DIFY本地部署全流程:先安装Docker与Git,再克隆GitHub官方仓库(langgenius/dify);接着通过终端完成配置文件复制与初始化(访问http://localhost/install);最后集成CanopyWave插件,配置专属API密钥及模型地址,即可启用企业级AI应用。
5498 3
|
8月前
|
SQL 存储 分布式计算
五、Hive表类型、分区及数据加载
在 Hive 中设计表,绝不仅是“建个结构那么简单”。选对内部表或外部表,决定了数据的归属和生命周期;设计合理的静态/动态分区策略,则直接关系到大数据场景下的查询效率和存储管理成本。本文深入讲解 Hive 表类型与分区机制,配合大量实战代码与练习题,带你从“写对语法”走向“设计合理”,让你的数仓查询快到飞起!
829 11
|
存储 NoSQL 关系型数据库
微服务Zipkin链路追踪原理,图解版,一文吃透!
本文重点讲解Zipkin链路追踪的原理与使用,帮助解决微服务架构下的服务响应延迟等问题,提升系统性能与稳定性。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
微服务Zipkin链路追踪原理,图解版,一文吃透!
|
应用服务中间件 网络安全 nginx
轻松上手Nginx Proxy Manager:安装、配置与实战
Nginx Proxy Manager (NPM) 是一款基于 Nginx 的反向代理管理工具,提供直观的 Web 界面,方便用户配置和管理反向代理、SSL 证书等。本文档介绍了 NPM 的安装步骤,包括 Docker 和 Docker Compose 的安装、Docker Compose 文件的创建与配置、启动服务、访问 Web 管理界面、基本使用方法以及如何申请和配置 SSL 证书,帮助用户快速上手 NPM。
16291 1

热门文章

最新文章