Atitit.mysql oracle with as模式暫存資料表模式 CTE 語句的使用,減少子查詢的結構性 mssql sql server..,atitit.mysqlcte

來源:互聯網
上載者:User

Atitit.mysql oracle with as模式暫存資料表模式 CTE 語句的使用,減少子查詢的結構性 mssql sql server..,atitit.mysqlcte

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.csdn.net/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

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.