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

首頁 > 數據庫 > Oracle > 正文

oracle select執行順序的詳解

2020-07-26 14:25:59
字體:
來源:轉載
供稿:網友
SQL Select語句完整的執行順序:
1、from子句組裝來自不同數據源的數據;
2、where子句基于指定的條件對記錄行進行篩選;
3、group by子句將數據劃分為多個分組;
4、使用聚集函數進行計算;
5、使用having子句篩選分組;
6、計算所有的表達式;
7、使用order by對結果集進行排序。

oracle 語句提高查詢效率的方法
1:.. where column in(select * from ... where ...);
2:... where exists (select 'X' from ...where ...);
第二種格式要遠比第一種格式的效率高。在Oracle中可以幾乎將所有的IN操作符子查詢改寫為使用EXISTS的子查詢
使用EXISTS,Oracle系統會首先檢查主查詢,然后運行子查詢直到它找到第一個匹配項,這就節省了時間
Oracle系統在執行IN子查詢時,首先執行子查詢,并將獲得的結果列表存放在在一個加了索引的臨時表中

選擇最有效率的表名順序(只在基于規則的優化器中有效)
ORACLE的解析器按照從右到左的順序處理FROM子句中的表名,因此FROM子句中寫在最后的表(基礎表 driving table)將被最先處理。在FROM子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表。當ORACLE處理多個表時,會運用排序及合并的方式連接它們。首先,掃描第一個表(FROM子句中最后的那個表)并對記錄進行派序,然后掃描第二個表(FROM子句中最后第二個表),最后將所有從第二個表中檢索出的記錄與第一個表中合適記錄進行合并。
如果有3個以上的表連接查詢,那就需要選擇交叉表(intersection table)作為基礎表,交叉表是指那個被其他表所引用的表。

WHERE子句中的連接順序
ORACLE采用自下而上的順序解析WHERE子句,根據這個原理,表之間的連接必須寫在其他WHERE條件之前,那些可以過濾掉最大數量記錄的條件必須寫在WHERE子句的末尾。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 正镶白旗| 江川县| 水城县| 集贤县| 定西市| 娄烦县| 武宁县| 新营市| 海门市| 新密市| 湘乡市| 乌拉特中旗| 泗洪县| 宁都县| 苏尼特右旗| 容城县| 浪卡子县| 雷山县| 西平县| 汶上县| 黎城县| 荔浦县| 北宁市| 三明市| 广汉市| 民丰县| 安国市| 德州市| 天镇县| 西城区| 河间市| 疏附县| 革吉县| 灌阳县| 靖安县| 二连浩特市| 运城市| 临夏县| 措美县| 吉木萨尔县| 翁牛特旗|