Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >[PostgreSQL] - CTE

[PostgreSQL] - CTE

作者头像
夹胡碰
发布于 2022-09-19 00:05:24
发布于 2022-09-19 00:05:24
71300
代码可运行
举报
文章被收录于专栏:程序猿~程序猿~
运行总次数:0
代码可运行

一、什么是CTE

全称 common table expressions,表示临时结果,用with as语句,可以在其他SQL中引用,如select、insert、update和delete。

二、有什么作用

相当于用with as语句创建临时表,SQL结构清晰,并且结果可以复用。

三、如何使用

下面是使用样例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
with c1 as (
    select * from t1
) 
,with c2 as (
    select * from c1
) 

select * from c2 where id = 100;

四、是否进行物化

as materialized or not as materialized 在PG12之前,with语句都是通过将子查询先进行物化,这就导致了一个问题:with子查询外的条件无法内推到里面,并且会产生物化视图,会影响查询性能。 使用PG12会自动判断是否物化(自测得出,版本12.2),但是有些场景需要我们手动控制才能保证查询效率。

1、with as

只有其中一个with as物化了

2、with as not materialized

没有物化的

3、with as materialized

全部物化

五、建议

1、物化场景

a. 复杂计算结果表,或多表复用可以物化。

2、非物化场景

a. join表不要物化,内存中直接连接(尽量on在索引上)。
b. 能进行索引内推的不要物化,或者在内部就进行where筛选。
参考

1、PostgreSQL CTE语句与materialized 2、7.8. WITH查询(公共表表达式)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Postgresql 性能优化 轻OLAP 如何进行优化
POSTGRESQL 作为开源中高级的数据库,对于OLAP的操作是支持的,和SQL SERVER ,ORACLE 属于同一种类型。所以对于一些轻型的OLAP如何进行优化也是一种的需求。
AustinDatabases
2022/05/19
1.6K0
Postgresql  性能优化  轻OLAP 如何进行优化
迁移实战:Discourse 从 PostgreSQL 到 MySQL 到 TiDB丨AskTUG 论坛背后的故事
AskTUG.com 技术问答网站相信大家都不陌生,但除了日常熟知的前端页面外,背后支撑其运行的数据库还有一个不为人知的故事。本文由 AskTUG.com 的作者之一王兴宗老师分享,揭秘诞生于 Discourse 的 AskTUG.com ,从 PostgreSQL 迁移到 MySQL 最后稳定运行在 TiDB 的奇妙故事。
PingCAP
2021/06/25
3.2K0
迁移实战:Discourse 从 PostgreSQL 到 MySQL 到 TiDB丨AskTUG 论坛背后的故事
PostgreSQL 物化视图 与 表继承 的头脑风暴
OK PostgreSQL 的菜单上也有一个叫 Materialized views 的功能,同时PG 也有一个表 inheritance 的东西。而这两样东西可以解决数据应用中的很多问题。那怎么来应用PG 提供的这两个功能。
AustinDatabases
2019/09/12
1.9K0
PostgreSQL 物化视图 与 表继承 的头脑风暴
360°全方位比较PostgreSQL和MySQL
https://www.enterprisedb.com/blog/postgresql-vs-mysql-360-degree-comparison
yzsDBA
2020/01/18
14.9K0
360°全方位比较PostgreSQL和MySQL
30个sql技巧
技巧: 尽量使用INNER JOIN,除非明确需要所有数据,避免使用LEFT JOIN或RIGHT JOIN。
用户11397231
2024/12/10
1250
PostgreSQL 查询语句开发写不好是必然,不是PG的锅
当时指出了一些问题,基于时间的原因知道有问题,但没有说出具体的问题,当时也提到这样写语句,数据库基本上无法走执行计划,因为没有统计分析。
AustinDatabases
2024/01/26
1580
PostgreSQL  查询语句开发写不好是必然,不是PG的锅
GreatSQL优化技巧:半连接(semijoin)优化
半连接是在GreatSQL内部采用的一种执行子查询的方式,semi join不是语法关键字,不能像使用inner join、left join、right join这种语法关键字一样提供给用户来编写SQL语句。
GreatSQL社区
2024/04/18
1070
GreatSQL优化技巧:半连接(semijoin)优化
SQL优化(五) PostgreSQL (递归)CTE 通用表表达式
原创文章,转载请务必将下面这段话置于文章开头处(保留超链接)。 本文转发自技术世界,原文链接 http://www.jasongj.com/sql/cte/ CTE or WITH WITH语句通常被称为通用表表达式(Common Table Expressions)或者CTEs。 WITH语句作为一个辅助语句依附于主语句,WITH语句和主语句都可以是SELECT,INSERT,UPDATE,DELETE中的任何一种语句。 例讲CTE WITH语句最基本的功能是把复杂查询语句拆分成多个简单的部分,如下
Jason Guo
2018/06/11
2.7K0
ClickHouse DDL
数据库起到了命名空间的作用,可以有效规避命名冲突的问题,也为后续的数据隔离提供了支撑。任何一张数据表,都必须归属在某个数据库之下。创建数据库的完整语法如下所示:
CoderJed
2022/01/07
1.3K0
PostgreSQL基础(八):表的基本操作(二)
物化视图从名字上就可以看出来,必然是要持久化一份数据的。使用套路和视图基本一致。这样一来查询物化视图,就相当于查询一张单独的表。相比之前的普通视图,物化视图就不需要每次都查询复杂SQL,每次查询的都是真实的物理存储地址中的一份数据(表)。
Lansonli
2024/09/25
1720
PostgreSQL基础(八):表的基本操作(二)
Hive3查询基础知识
使用Apache Hive,您可以查询包括Hadoop数据在内的分布式数据存储。
大数据杂货铺
2020/03/10
4.7K0
Hive3查询基础知识
[PostgreSQL] - explain SQL分析介绍
一、图形化在线分析工具 https://explain.dalibo.com/ 二、执行分析语句 EXPLAIN (ANALYZE, COSTS, VERBOSE, BUFFERS, FORMAT JSON) select * from ... 生成分析JSON之后,填入图形化分析页面,进行分析。 三、分析样例 1、走索引 - Index Scan Node 表示先走二级索引,再走一级索引找到数据 finds relevant records based on an Index. Index Sc
夹胡碰
2022/07/30
8450
[PostgreSQL] - explain SQL分析介绍
ClickHouse SQL基本语法和导入导出实战
数据库起到了命名空间的作用,可以有效规避命名冲突的问题,也为后续的数据隔离提供了支撑。任何一张数据表,都必须归属在某个数据库之下。
王知无-import_bigdata
2022/04/13
2.7K0
ClickHouse SQL基本语法和导入导出实战
POSTGRESQL 如何存储树形数据 处理树形数据
树形数据是一种什么体现,形式, 这里先提前的展示一下,为下面的postgresql操作树形数据做一个铺垫.
AustinDatabases
2020/07/01
3.1K0
MySQL对derived table的优化处理与使用限制
随着MySQL版本的发展,优化器是越来越智能,优化器开关也越来越多,本文给大家分享一下MySQL对derived table的优化处理。
GreatSQL社区
2023/08/11
5720
MySQL对derived table的优化处理与使用限制
PostgreSQL - SQL调优方案
有个更好的办法,是安装扩展pg_stat_statements,此处需要PostgreSql支持,部分版本需要编译安装:
雨临Lewis
2022/03/08
2.1K0
SQLServer CTE 递归查询
在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,递归查询主要用于层次结构的查询,从叶级(Leaf Level)向顶层(Root Level)查询,或从顶层向叶级查询,或递归的路径(Path)。
挽风
2021/04/13
1.7K0
SQLServer CTE 递归查询
【SQL揭秘】有多少种数据库,就有多少类CTE
Common Table Expression Common table expression简称CTE,由SQL:1999标准引入,可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集。CTE 与派生表类似,具体表现在不存储为对象,并且只在查询期间有效。与派生表的不同之处在于,CTE 可自引用,还可在同一查询中引用多次。 目前支持CTE的数据库有Teradata, DB2, Firebird, Microsoft SQL
数据和云
2018/03/07
2.9K0
【SQL揭秘】有多少种数据库,就有多少类CTE
《PostgreSQL物化视图:创建、维护与应用》
喵~ 🐱 猫头虎博主在此!如果你正在寻找“PostgreSQL物化视图”方面的知识,那么你找对了地方!物化视图是一种强大的工具,可以提高查询性能并简化数据处理。本文将详细介绍它的创建、维护和应用。加入我们,一起挖掘更多宝藏吧!🔍💡
猫头虎
2024/04/09
8250
RDS PostgreSQL 存在的限制
经过测试使用发现,RDS PostgreSQL 存在限制的主要有两类 SQL 命令:
用户10663322
2023/07/17
2980
相关推荐
Postgresql 性能优化 轻OLAP 如何进行优化
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文