国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

oracle筆記(7)----oracle 查詢執行順序

2019-11-09 13:30:12
字體:
來源:轉載
供稿:網友

Oracle 語句提高查詢效率的方法1:.. where column in(select * from ... where ...); 2:... where exists (select 'X' from ...where ...); 第二種格式要遠比第一種格式的效率高。在Oracle中可以幾乎將所有的IN操作符子查詢改寫為使用EXISTS的子查詢 使用EXISTS,Oracle系統會首先檢查主查詢,然后運行子查詢直到它找到第一個匹配項,這就節省了時間 Oracle系統在執行IN子查詢時,首先執行子查詢,并將獲得的結果列表存放在在一個加了索引的臨時表中 避免使用having字句 避免使用HAVING子句, HAVING 只會在檢索出所有記錄之后才對結果集進行過濾. 這個處理需要排序,總計等操作. 如果能通過WHERE子句限制記錄的數目,那就能減少這方面的開銷。

 

SQL Select語句完整的執行順序:

1、from子句組裝來自不同數據源的數據;2、where子句基于指定的條件對記錄行進行篩選;3、group by子句將數據劃分為多個分組;4、使用聚集函數進行計算;5、使用having子句篩選分組;6、計算所有的表達式;7、使用order by對結果集進行排序。

在select 語句中可以使用group by 子句將行劃分成較小的組,然后,使用聚組函數返回每一個組的匯總信息,另外,可以使用having子句限制返回的結果集。group by 子句可以將查詢結果分組,并返回行的匯總信息Oracle 按照group by 子句中指定的表達式的值分組查詢結果。

在帶有group by 子句的查詢語句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚組函數select max(sal),job emp group by job;(注意max(sal),job的job并非一定要出現,但有意義)查詢語句的select 和group by ,having 子句是聚組函數唯一出現的地方,在where 子句中不能使用聚組函數。select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;

having 對分組數據進行過濾
    求部門評價工資:
    select * from (select avg(sal) sal, deptno from emp group by deptno) where sal > 2000;
    select avg(sal) sal, deptno from emp group by deptno having avg(sal) > 2000;

where 子句的作用是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組之前過濾數據,條件中不能包含聚組函數,使用where條件顯示特定的行。having 子句的作用是篩選滿足條件的組,即在分組之后過濾數據,條件中經常包含聚組函數,使用having 條件顯示特定的組,也可以使用多個分組標準進行分組。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 获嘉县| 宁强县| 房产| 凤台县| 宕昌县| 翁牛特旗| 平南县| 漯河市| 连云港市| 泰宁县| 玛沁县| 洪洞县| 仁怀市| 吴桥县| 筠连县| 南丰县| 临颍县| 志丹县| 浦北县| 泾阳县| 康马县| 比如县| 武安市| 临颍县| 舞钢市| 兴安盟| 华蓥市| 蒙阴县| 洞头县| 宁蒗| 江口县| 寿宁县| 裕民县| 开阳县| 新乐市| 营口市| 阿勒泰市| 镇宁| 孝昌县| 横峰县| 台安县|