设为首页 收藏本站
查看: 1078|回复: 0

[经验分享] Atitit.mysql oracle with as模式临时表模式 CTE 语句的使用,减少子查询的结构性 mssql sql server..

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-11 13:59:15 | 显示全部楼层 |阅读模式
Atitit.mysql  oracle with as模式临时表模式 CTE 语句的使用,减少子查询的结构性 mssql sql server..

1. with ... as (...) 在mysql中应该如何表示1
2. 子查询和查询嵌套主要是便于可读性提升上, 2
3. MYSQL中的解决之道::临时表。 2
4. Seo黑头关键字替换链接的统计样品 2
4.1. //---------查询com网站的数量 2
4.2. //----------------------查询net网站的数量 2
4.3. ---------------联合统计 3
5. with as + materialize是一种强制进行子查询先执行的好办法。 3

1. with ... as (...) 在mysql中应该如何表示SQL语句是关系型数据库最直接也是最普遍的数据访问、操作方式。应该说,RDBMS的成功因素之中,SQL语言标准的推广有不可磨灭的功劳。Oracle、SQL Server和DB2等主流数据库都是在标准SQL的基础上,加以个性化拓展,实现高效的数据库应用。
with as是Oracle SQL语系里面经常使用到的一种语句结构。特别是在一些数据仓库挖掘系统中,SQL语句结构和嵌套结构是很复杂的。with as可以帮助我们简化语句结构,提高语句可读性,另外还可以提升语句执行计划控制性。

Oracle 9i 新增WITH语法,可以将查询中的子查询命名,放到SELECT语句的最前面。
作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com
转载请注明来源: http://blog.iyunv.com/attilax


Db2,mssql,oracle 都支持with ... as 的使用..

2. 子查询和查询嵌套主要是便于可读性提升上,绝大多数的子查询和嵌套,都可以通过一系列的连接来完成。而数据库系统是擅长连接操作的

3. MYSQL中的解决之道::临时表。
可以在MYSQL官方手册中查阅一下MYSQL临时表的创建使用。


4. Seo黑头关键字替换链接的统计样品
4.1. //---------查询com网站的数量DROP TEMPORARY TABLE
IF EXISTS tmp_table;

CREATE TEMPORARY TABLE tmp_table SELECT
SUBSTR(url, 1, LOCATE('.com', url) + 3) AS domain
FROM
link_big
WHERE
LOCATE('.com', url) > 0;

4.2. //----------------------查询net网站的数量
DROP TEMPORARY TABLE
IF EXISTS tmp_table2;

CREATE TEMPORARY TABLE tmp_table2  
SELECT
SUBSTR(url, 1, LOCATE('.net', url) + 3) AS domain
FROM
link_big
WHERE
LOCATE('.net', url) > 0;

4.3. ---------------联合统计SELECT
count(*),
domain
FROM
tmp_table
GROUP BY
domain
UNION
SELECT
count(*),
domain
FROM
tmp_table2
GROUP BY
domain

5. with as + materialize是一种强制进行子查询先执行的好办法。
综合上面的讨论,我们可以得到with as应用的条件和好处。总体上看,with as可以带来两方面的好处。第一是语句清晰度上,将原有的复杂子查询内容拆解为若干语句块,提高了可读性。第二是对于自动临时表,可以将子查询数据先检索出来,在内存中进行组织连接。
最后我们想讨论一下对于subquery unnested特性。大多数情况下,我们认为Oracle这个特性是可以生成更好地执行计划的。但是,在实践中我们也的确发现过很多这样的场景:子查询速度很快、数据量也不大,但是连接之后速度变慢,结果是发现执行计划中子查询被打开。
默认情况下,Oracle在估算多条件语句结果集数量的时候,是有“计算偏小”的特性的。也就是估算的结果集数量要小于实际数量,这个是由于默认统计量没有考虑列相关性的原因。所以,大部分查询展开都是被通过的。
如果出现这样的情况,with as + materialize是一种强制进行子查询先执行的好办法。


参考
mysql 创建与删除临时表sql语句-mysql教程-数据库-壹聚教程网.htm
从五个SQL看with as使用-realkid4-ITPUB博客.htm



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-37855-1-1.html 上篇帖子: mysql监控工具:zabbix+MPM(Performance Monitor for MySQL) 下篇帖子: MySQL LOAD DATA INFILE解析 oracle server 结构性
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表