1. 程式人生 > >oracle筆記(7)----oracle 查詢執行順序

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

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 條件顯示特定的組,也可以使用多個分組標準進行分組。

相關推薦

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

Oracle 語句提高查詢效率的方法 1:.. where column in(select * from ... where ...); 2:... where exists (select 'X

Oracle筆記 多表查詢

針對 多人 筆記 padding 工資 cells 找到 mem 概念 Oracle筆記(六) 多表查詢 本次預計講解的知識點 1、 多表查詢的操作、限制、笛卡爾積的問題; 2、 統計函數及分組統計的操作; 3、 子查詢的操作,並且結合限定查詢、數據排序、多表查詢、統計

Oracle筆記 單行函數

sys 字符函數 下標 年份 智能 功能 存在 oracle數據庫 一個數據庫 Oracle筆記(五) 單行函數 雖然各個數據庫都是支持SQL語句的,但是每一個數據庫也有每一個數據庫自己所支持的操作函數,這些就是單行函數,而如果要想進行數據庫開發的話,除了要會使用SQL

Oracle筆記 SQLPlus命令

建立 sql 後綴 一個數 例程 imm 模式 命令行 rac Oracle筆記(二) SQLPlus命令 對於Oracle數據庫操作主要使用的是命令行方式,而所有的命令都使用sqlplus完成,對於sqlplus有兩種形式。 一種是dos風格的sqlplus:sql

Oracle筆記 約束

完整 編號 ins 非空約束 where check 字段 使用 四種 Oracle筆記(十) 約束 表雖然建立完成了,但是表中的數據是否合法並不能有所檢查,而如果要想針對於表中的數據做一些過濾的話,則可以通過約束完成,約束的主要功能是保證表中的數據合法性,按照約束的分

oracle 11g ocp 筆記1-- oracle 11g體系結構概述

負責 進程 arc 可能 安裝數據庫 存儲 parallel 情況下 位圖 參考文檔: https://blog.csdn.net/gyming/article/details/41593811 1、oracle系列產品 1.1 服務器分為數據庫服務器、應用服務器和企

oracle 11g ocp 筆記5-- oracle存儲結構

dia tro min 編號 contents all 重做日誌 absolut bit 1、了解oracle表空間和數據文件。 oracle存儲模型。表空間、段、區間、oracle塊,數據文件、和操作系統塊的對應關系。 select segment _type ,coun

軟件安裝配置筆記——oracle的安裝與配置

管理器 系統 同時 acl 安裝配置 默認方法 network 設置 分號 註: 1、當ArcGIS Server 和 ArcMap 安裝在一臺服務器上,Oracle 安裝在另一臺服務器上時,ArcGIS Server 和 ArcMap的服務器需要同時安裝 32 位 和 6

軟體安裝配置筆記——oracle的安裝與配置

注: 1、當ArcGIS Server 和 ArcMap 安裝在一臺伺服器上,Oracle 安裝在另一臺伺服器上時,ArcGIS Server 和 ArcMap的伺服器需要同時安裝 32 位 和 64 位 Oracle 客戶端。 (server需64位,m

oracle筆記9---- 史上最全oracle練習題

13.列出所有員工及直接上級的姓名 Select e.ename, nvl (m.ename, '沒有上級') mname from emp e left join emp m on e.mgr = m.empno 14.列出受僱日期早於其直接上級的所有員工的編號,姓名,部門名稱 select e.empno

Oracle 筆記、安裝及體系結構

1、例項 例項是後臺程序和記憶體結構的集合,必須啟動例項才能訪問資料庫中的資料,一個例項只能開啟並使用一個數據庫。 例項啟動時,將分配一個系統全域性區(SGA)並啟動一系列的後臺程序,每個後臺程序執行不同的任務。2、資料庫 Oracle 資料庫物理上指一組作業系統檔案(資料檔案),邏輯上指資料庫建立後的邏輯關

Oracle學習筆記1Oracle 許可權grant、revoke

 查詢當前使用者擁有的角色: SELECT * FROM USER_ROLE_PRIVS; 3.物件許可權 物件許可權指的是其它擁有使用者的物件的許可權。其它使用者物件的許可權包括:SELECT,DELETE,UPDATE,ALTER,INSERT,INDEX,REFERENCES,FLASHBACK

oracle筆記2----substr使用

oracle的substr函式的用法 取得字串中指定起始位置和長度的字串   substr( string, start_position, [ length ] ) 如:     substr('T

Oracle學習--sql查詢包含子查詢

這裡用到了三個表,emp,dept,salgrade 注意閱讀“請先讀我”檔案 結構如下面幾個圖所示 表中的資料有以下圖所示: emp表----員工資訊表 dept表-----部門資訊

Oracle 筆記、安全管理

一、建立使用者二、使用者授權三、角色機制四、配置模版及資源限制附錄     資料庫安全的作用是控制使用者是否能夠對資料庫及其中的物件執行操作。要連線到 Oracle 資料庫,就需要建立一個使用者帳戶,該使用者可以根據需要授予不同的操作許可權。一、建立使用者    CREATE

Oracle筆記——虛擬機器下Centos7 x64位安裝Oracle 11g R2詳解

win7 x64位+VMware12+centos7 x64位+oracle 11g R2安裝詳解(二) 一、準備安裝的軟體及需要的工具    1、Oracle11g R2 ,下載連結,選擇Lin

樹莓派3學習筆記77分辨率800 480顯示器配置

樹莓派、顯示器配置樹莓派3學習筆記(7):7寸(分辨率800 480)顯示器配置 樹莓派搭載分辨率為800X480的顯示器在顯示的時候可能會遇到無法全屏顯示的問題, 顯示器只有部分能夠顯示,有一部分是黑邊,對於這一種情況,我們只需進入系統的boot目錄,找到config.txt文件,或者直接在命

java 筆記7 static關鍵字的應用

ble 變量 leg wal spa dog pub 類變量 oid import java.util.Enumeration; class Dog{ static int legNum; int age; public stati

C#學習筆記7——委托

() namespace test task cnblogs [] string 命名空間 program 說明(2017-5-29 22:22:50): 1. 語法:public delegate void mydel();這一句在類外面,命名空間裏面。 2. 專門新建一

Linux學習筆記7

7一、PATH環境變量PATH 環境變量用which可以查看到一個命令的所在路徑,包括它的alias,實際是從當前環境的目錄下去找的。echo $PATH 查看當前命令 rm = /usr/bin/rm舉例:cp /usr/bin/ls /tmp/bin/ls2如果想直接使用ls2,有以下兩種方法:(