oracle中with的用法及用处
2016-03-28 10:42
417 查看
原文出处:http://blog.csdn.net/chenjinlin1/article/details/6572401
----------------------------------------------------------------
========
WITH
========
用于一个语句中某些中间结果放在临时表空间的SQL语句
如
WITH channel_summary AS (
SELECT channels.channel_desc, SUM(amount_sold) AS channel_total
FROM sales, channels
WHERE sales.channel_id = channels.channel_id
GROUP BY channels.channel_desc
)
SELECT channel_desc, channel_total
FROM channel_summary
WHERE channel_total > (
SELECT SUM(channel_total) * 1/3
FROM channel_summary);
CHANNEL_DESC CHANNEL_TOTAL
-------------------- -------------
Direct Sales 312829530
channel_summary表就是WITH生成的中间表
1: 这个临时表空间channel_summary 什么时候清除呢?是一个会话结束自动消失嘛?
临时表在会话结束就自动被PGA清除
2:就这一功能来说,子查询就可以达到啊,为什么要用with呢? 用with有什么好处,不会仅仅是 ...
都能写,但执行计划不同的。当有多个相似子查询的时候,用with写公共部分,因为子查询结果在内存临时表中,执行效率当然就高啦。
如果你后面需要不止一次地引用这个结果,那么WITH就会大大提高效率。
代码的可读性好
----------------------------------------------------------------
========
WITH
========
用于一个语句中某些中间结果放在临时表空间的SQL语句
如
WITH channel_summary AS (
SELECT channels.channel_desc, SUM(amount_sold) AS channel_total
FROM sales, channels
WHERE sales.channel_id = channels.channel_id
GROUP BY channels.channel_desc
)
SELECT channel_desc, channel_total
FROM channel_summary
WHERE channel_total > (
SELECT SUM(channel_total) * 1/3
FROM channel_summary);
CHANNEL_DESC CHANNEL_TOTAL
-------------------- -------------
Direct Sales 312829530
channel_summary表就是WITH生成的中间表
1: 这个临时表空间channel_summary 什么时候清除呢?是一个会话结束自动消失嘛?
临时表在会话结束就自动被PGA清除
2:就这一功能来说,子查询就可以达到啊,为什么要用with呢? 用with有什么好处,不会仅仅是 ...
都能写,但执行计划不同的。当有多个相似子查询的时候,用with写公共部分,因为子查询结果在内存临时表中,执行效率当然就高啦。
如果你后面需要不止一次地引用这个结果,那么WITH就会大大提高效率。
代码的可读性好
相关文章推荐
- ORACLE使用WITH AS和HINT MATERIALIZE优化SQL解决FILTER效率低下
- oracle新增修改表字段+注释
- oracle数据库导入导出命令
- ORACLE自动生成8位带数字和字母的随机密码
- Oracle 11g 学习3——表空间操作
- Oracle 迁移到 Mycat 简单测试
- Oracle安装错误ora-00922(缺少或无效选项)
- mycat 平台上实现将数据从oracle迁移到mysql
- Linux下安装cx-Oracle小记
- 如何解决w8.1系统安装oracle 11g出现未找到文件的问题
- Oracle视图
- Oracle的一些简单语句
- Oracle存储过程基本语法介绍
- oracle_触发器监控修改字段的客户端IP、用户名、新旧值
- 个人常用Oracle SQL优化工具(脚本)介绍(未完成)
- Oracle VM + centos7.1+openstack kilo 多结点安装教程---基础环境配置(1)
- Oracle 索引维护
- Oracle Data Integrator 12c 安装(ODI安装)
- Oracle Data Integrator 12c 安装(ODI安装)
- oracle 找不到监听