日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Oracle 9i 數據庫WITH查詢語法小議

瀏覽:30日期:2023-11-12 13:59:42
Oracle9i新增了WITH語法功能,可以將查詢中的子查詢命名,放到SELECT語句的最前面。 下面看一個簡單的例子: SQL> WITH2 SEG AS (SELECT SEGMENT_NAME, SUM(BYTES)/1024 K FROM USER_SEGMENTS GROUP BY SEGMENT_NAME),3 OBJ AS (SELECT OBJECT_NAME, OBJECT_TYPE FROM USER_OBJECTS)4 SELECT O.OBJECT_NAME, OBJECT_TYPE, NVL(S.K, 0) SIZE_K5 FROM OBJ O, SEG S6 WHERE O.OBJECT_NAME = S.SEGMENT_NAME (+)7 ;OBJECT_NAME OBJECT_TYPE SIZE_KDAIJC_TEST TABLE 128P_TEST PROCEDURE 0IND_DAIJC_TEST_C1 INDEX 128通過WITH語句定義了兩個子查詢SEG和OBJ,在隨后的SELECT語句中可以直接對預定義的子查詢進行查詢。從上面的例子也可以看出,使用WITH語句,將一個包含聚集、外連接等操作SQL清楚的展現出來。 WITH定義的子查詢不僅可以使查詢語句更加簡單、清楚,而且WITH定義的子查詢還具有在SELECT語句的任意層均可見的特點。 即使是在WITH的定義層中,后定義的子查詢都可以使用前面已經定義好的子查詢: SQL> WITH2 Q1 AS (SELECT 3 + 5 S FROM DUAL),3 Q2 AS (SELECT 3 * 5 M FROM DUAL),4 Q3 AS (SELECT S, M, S + M, S * M FROM Q1, Q2)5 SELECT * FROM Q3;S M S+M S*M8 15 23 120利用WITH定義查詢中出現多次的子查詢還能帶來性能提示。Oracle會對WITH進行性能優化,當需要多次訪問WITH定義的子查詢時,Oracle會將子查詢的結果放到一個臨時表中,避免同樣的子查詢多次執行,從而有效的減少了查詢的IO數量。 看一個簡單的例子,首先構造一張大表,現在要取出大表中ID最小、ID最大以及ID等于平均值的記錄,看看普通寫法和WITH語句的區別: SQL> CREATE TABLE T_WITH AS SELECT ROWNUM ID, A.* FROM DBA_SOURCE A WHERE ROWNUM < 100001; 表已創建。 SQL> SET TIMING ON SQL> SET AUTOT ON SQL> SELECT ID, NAME FROM T_WITH2 WHERE ID IN 3 (4 SELECT MAX(ID) FROM T_WITH 5 UNION ALL6 SELECT MIN(ID) FROM T_WITH7 UNION ALL8 SELECT TRUNC(AVG(ID)) FROM T_WITH9 );ID NAME1 STANDARD50000 DBMS_BACKUP_RESTORE100000 INITJVMAUX已用時間: 00: 00: 00.09執行計劃Plan hash value: 647530712----------------------------------------------------------- Id Operation Name Rows Bytes ----------------------------------------------------------- 0 SELECT STATEMENT 3 129 * 1 HASH JOIN 3 129 2 VIEW VW_NSO_1 3 39 3 HASH UNIQUE 3 39 4 UNION-ALL 5 SORT AGGREGATE 1 13 6 TABLE Access FULL T_WITH 112K 1429K 7 SORT AGGREGATE 1 13 8 TABLE ACCESS FULL T_WITH 112K 1429K 9 SORT AGGREGATE 1 13 10 TABLE ACCESS FULL T_WITH 112K 1429K 11 TABLE ACCESS FULL T_WITH 112K 3299K-----------------------------------------------------------Predicate Information (identified by operation id):---------------------------------------------------1 - access('ID'='$nso_col_1')Note------ dynamic sampling used for this statement統計信息----------------------------------------------------------0 recursive calls0 db block gets5529 consistent gets0 physical reads0 redo size543 bytes sent via SQL*Net to client385 bytes received via SQL*Net from client2 SQL*Net roundtrips to/from client0 sorts (memory)0 sorts (disk)3 rows processed為了避免第一次執行時物理讀的影響,查詢結果選取了SQL的第三次運行,物理讀為0時的統計信息。 觀察執行計劃可以看到,先后對T_WITH表進行了4次全表掃描,并產生了5529個邏輯讀。下面看看WITH語句的表現: SQL> WITH2 AGG AS (SELECT MAX(ID) MAX, MIN(ID) MIN, TRUNC(AVG(ID)) AVG FROM T_WITH)3 SELECT ID, NAME FROM T_WITH 4 WHERE ID IN 5 (6 SELECT MAX FROM AGG 7 UNION ALL 8 SELECT MIN FROM AGG 9 UNION ALL 10 SELECT AVG FROM AGG11 );ID NAME---------- ------------------------------1 STANDARD50000 DBMS_BACKUP_RESTORE100000 INITJVMAUX已用時間: 00: 00: 00.07執行計劃----------------------------------------------------------Plan hash value: 1033356310---------------------------------------------------------------------------------- Id Operation Name Rows Bytes ---------------------------------------------------------------------------------- 0 SELECT STATEMENT 3 129 1 TEMP TABLE TRANSFORMATION 2 LOAD AS SELECT T_WITH 3 SORT AGGREGATE 1 13 4 TABLE ACCESS FULL T_WITH 112K 1429K* 5 HASH JOIN 3 129 6 VIEW VW_NSO_1 3 39 7 HASH UNIQUE 3 39 8 UNION-ALL 9 VIEW 1 13 10 TABLE ACCESS FULL SYS_TEMP_0FD9D662E_BF2EDF12 1 13 11 VIEW 1 13 12 TABLE ACCESS FULL SYS_TEMP_0FD9D662E_BF2EDF12 1 13 13 VIEW 1 13 14 TABLE ACCESS FULL SYS_TEMP_0FD9D662E_BF2EDF12 1 13 15 TABLE ACCESS FULL T_WITH 112K 3299K----------------------------------------------------------------------------------Predicate Information (identified by operation id):---------------------------------------------------5 - access('ID'='$nso_col_1')Note------ dynamic sampling used for this statement統計信息----------------------------------------------------------2 recursive calls8 db block gets2776 consistent gets1 physical reads648 redo size543 bytes sent via SQL*Net to client385 bytes received via SQL*Net from client2 SQL*Net roundtrips to/from client0 sorts (memory)0 sorts (disk)3 rows processed觀察這次的執行計劃,發現只對T_WITH表進行了兩次全表掃描,而從邏輯讀上也可以觀察到,這次只產生了2776的邏輯讀,正好是上面不使用WITH語句的一半。 通過分析執行計劃,Oracle執行了WITH子查詢一次,并將結果放到了臨時表中,在隨后對子查詢的多次訪問中,都從臨時表中直接讀取了數據,這應該也是那1個物理讀的由來。 通過上面的例子可以看到,將子查詢放到WITH語句中不僅可以簡化查詢語句的結構,對于子查詢需要多次執行的情況,還有可能提示查詢的性能。 可惜的是,WITH語句只能用在SELECT語句中,UPDATE和DELETE語句不支持WITH語法: SQL> SET AUTOT OFFSQL> SET TIMING OFFSQL> WITH SUBQ AS (SELECT 1 FROM DUAL)2 SELECT ID, NAME FROM T_WITH WHERE ID IN (SELECT * FROM SUBQ);ID NAME---------- ------------------------------1 STANDARDSQL> WITH SUBQ AS (SELECT 1 FROM DUAL)2 UPDATE T_WITH SET ID = 1 WHERE ID IN (SELECT * FROM SUBQ);UPDATE T_WITH SET ID = 1 WHERE ID IN (SELECT * FROM SUBQ)*第 2 行出現錯誤:ORA-00928: 缺失 SELECT 要害字SQL> WITH SUBQ AS (SELECT 1 FROM DUAL)2 DELETE T_WITH WHERE ID IN (SELECT * FROM SUBQ);DELETE T_WITH WHERE ID IN (SELECT * FROM SUBQ)*第 2 行出現錯誤:ORA-00928: 缺失 SELECT 要害字
標簽: Oracle 數據庫
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费精品一区| 一区二区三区视频免费观看| 麻豆精品久久| 久久精品99国产精品日本| 亚洲香蕉视频| 亚洲1区在线观看| 激情91久久| 亚洲成人精选| 国内激情久久| 999国产精品| 视频福利一区| 日韩欧美一区二区三区在线观看| 国产 日韩 欧美 综合 一区| 成人在线黄色| 99国产精品| 日韩av一二三| 国产第一亚洲| 成人看片网站| 免费看黄色91| 国产精品红桃| 伊人精品久久| 欧美精选一区二区三区| 日韩成人亚洲| 亚洲制服欧美另类| av不卡在线看| 亚洲2区在线| 亚洲欧美综合| 亚洲精品三级| 国产视频一区在线观看一区免费| 久久国产亚洲精品| 亚洲欧美久久精品| 精品一区毛片| 日韩国产精品久久久久久亚洲| 久久电影tv| 鲁大师成人一区二区三区| 亚洲欧洲国产精品一区| 蜜臀a∨国产成人精品| 涩涩av在线| 亚洲成人国产| 国产精品美女久久久| 亚洲在线一区| 悠悠资源网久久精品| 欧美一级久久| 男人操女人的视频在线观看欧美| 伊人久久成人| 日本大胆欧美人术艺术动态| 日韩影片在线观看| 水蜜桃久久夜色精品一区的特点| 综合一区在线| 欧美精品91| 青草综合视频| 久久亚洲精品中文字幕蜜潮电影| 亚洲制服一区| 91国语精品自产拍| 国产一区二区三区亚洲| 日韩精品免费观看视频| 亚洲欧美日韩高清在线| 亚洲精品一级| 在线 亚洲欧美在线综合一区| 欧美日韩在线播放视频| 国产精品日韩| 日韩av午夜在线观看| 欧美一级二级三级视频| 国产精品毛片一区二区三区| 成人久久久久| 日韩中文字幕区一区有砖一区| 国产精品综合| 国产毛片一区| 久久麻豆视频| 午夜精品一区二区三区国产| 一区二区亚洲精品| 卡一精品卡二卡三网站乱码| 欧美日韩水蜜桃| 欧美日韩 国产精品| 国产精品丝袜在线播放| 免费观看不卡av| 欧美日韩在线精品一区二区三区激情综合 | 水蜜桃精品av一区二区| 国产精品社区| 麻豆视频在线看| 日韩不卡一区二区| 亚洲成人日韩| 日韩久久电影| 国产精品1区| 日韩在线电影| 香蕉国产精品| 中文在线资源| 欧美激情91| 日本高清久久| 亚洲综合不卡| 日本在线精品| 久久精品二区亚洲w码| 亚洲狼人精品一区二区三区| 欧美日韩国产传媒| 日韩免费在线| 国内一区二区三区| 欧美一级网址| 日本电影久久久| 亚洲伊人精品酒店| 国产精品日本欧美一区二区三区| 日韩精品午夜| 亚洲一区资源| 久久亚州av| 欧美精品国产| 日韩精品亚洲aⅴ在线影院| 黄色在线一区| 欧美一级精品| 亚洲精品成人图区| 色综合五月天| 精品精品99| 国产精品.xx视频.xxtv| 日韩av网站在线观看| 亚洲欧美日韩精品一区二区| japanese国产精品| 欧美中文高清| 日本免费新一区视频| 亚洲精品高潮| 免费高清在线一区| 蜜臀久久99精品久久久久久9 | 久久av导航| 91超碰国产精品| 国产美女精品视频免费播放软件| 日韩精品一级| 91精品观看| 91精品国产调教在线观看 | 国产91在线精品| 国产精品久久久久9999高清| 日本欧美在线看| 欧美国产视频| 国产精品久久久久久久久久妞妞 | 欧美黑人做爰爽爽爽| 国产精品男女| 日韩视频一二区| 日本va欧美va欧美va精品| 天堂va在线高清一区| 日韩中文字幕| 国产精品伦理久久久久久| 色爱综合网欧美| 欧洲av一区二区| 久久久水蜜桃av免费网站| 色婷婷狠狠五月综合天色拍| 亚洲精品成人图区| 国产91一区| 日韩一区二区免费看| 午夜亚洲一区| 日精品一区二区三区| 吉吉日韩欧美| 久久婷婷av| 日韩欧美一区二区三区在线观看 | 欧美成人精品午夜一区二区| 国产精品毛片aⅴ一区二区三区| 777久久精品| 久久久精品国产**网站| 91视频一区| 91九色精品| 日韩一区网站| 麻豆精品在线观看| 久久久国产精品一区二区中文| 久久久夜夜夜| 在线观看亚洲精品福利片| 国产精品乱战久久久| 国产精品视频首页| 成人影视亚洲图片在线| 亚洲激情黄色| 久久精品 人人爱| 伊人久久视频| 国产精品久久久久久久久免费高清| 久久久久久美女精品| 亚洲精品自拍| 麻豆视频观看网址久久| 久久国产尿小便嘘嘘| 国产精品99视频| 激情欧美一区二区三区| 免费久久99精品国产自在现线| 日本色综合中文字幕| 麻豆网站免费在线观看| 免费看的黄色欧美网站 | 亚洲精品1区| 国产欧美日韩一区二区三区在线| 久久久精品区| 亚洲一区不卡| 久久亚州av| 国产亚洲网站| 美腿丝袜在线亚洲一区| 午夜久久黄色| 国产精品a久久久久| 免费观看久久av| 日本三级亚洲精品| 亚洲一级网站| 美女av一区| 水蜜桃久久夜色精品一区的特点 | 久久不卡国产精品一区二区| 精品一区毛片| 久久精品网址| 亚洲精品国产精品粉嫩| 日韩精品91| 国产精品一区二区免费福利视频| 99久久精品网站| 国产精品久久久久av蜜臀| 国产视频一区在线观看一区免费|