惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
云风的 BLOG
云风的 BLOG
人人都是产品经理
人人都是产品经理
T
The Blog of Author Tim Ferriss
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
J
Java Code Geeks
博客园 - 聂微东
B
Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
WordPress大学
WordPress大学
腾讯CDC
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
Microsoft Azure Blog
Microsoft Azure Blog
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
美团技术团队
博客园 - Franky
Google DeepMind News
Google DeepMind News
V
V2EX
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
The Cloudflare Blog

博客园 - 南郭先生kaka

待处理数据的两种模型 nginx重启无法找到PId的解决办法 Wiki版产品需求---产品需求文档到底是谁的?产品到底是谁的? 为什么说private方法是有罪的 XML2JSON 的【net.sf.json.JSONException: nu.xom.ParsingException must be followed by either attribute specifications, ">" or "/>"】问题解决办法 继承的第一原则 致那些不甘寂寞的人 上传File时,浏览器总是添加<pre>的解决办法 使用XSLT转换XML2XML Java 模拟 Http Post 【Code Style】多余判断 java.lang.NoClassDefFoundError错误 Spring 中Quartz配置数据库化 FactoryBean在XML中的依赖注入方法 Camel FTP中文目录解决办法 配置CentOS6.3 NFS Bean复制的几种框架性能比较(Apache BeanUtils、PropertyUtils,Spring BeanUtils,Cglib BeanCopier) 重读《目标》---目标 重读《目标》---序
WITH AS SQL语句的用法
南郭先生kaka · 2013-04-25 · via 博客园 - 南郭先生kaka

    ‘WITH AS短语也叫做子查询因子(subquery factoring),主要作用是定义一个SQL片段,该片段会被SQL语句中的其它部分应用到。

     主要有这几个作用:

     1.使SQL语句的可读性更高一些。(感觉像编程中的本地变量概念,定义好之后,很多地方都可以使用)。

     2.提高查询效率。特别是对于UNION ALL和子查询被多次引用的时候。如果UNION ALL的很多部分可能相同,如果每个相同的部分都去执行一遍的话,成本很高,而使用WITH AS短语的话,则相同的部分只会执行一遍。执行方式是如果只被调用一次的话,那么和子查询一样,但是一遍以上的话,则会把WITH AS的数据插入到一个临时表中,这样的话,效率就会大幅度的提高。(这点和本地变量的概念还是一样的,本地变量被赋值了之后,后面调用的都是值,而原来的子查询则像方法调用,每次都是调用一遍,这样性能自然会差一些。)

      使用举例:

       with samp as (

       select aaa,bb,ccc from test where dd = ddd

       )  

       select bb from samp 

     注:Oracle是在Oracle 9i release 2开始进行支持的,之前的不支持。使用参考: http://dba-oracle.com/t_oracle_subquery_factoring.htm

           SQLServer则是在2005的时候已经支持了。使用指南:http://technet.microsoft.com/zh-cn/library/ms175972(v=sql.90)

           MySQL现在不支持。可以参考http://stackoverflow.com/questions/1382573/how-do-you-use-the-with-clause-in-mysql