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

首頁 > 數據庫 > Oracle > 正文

oracle select執行順序的詳解

2024-08-29 13:55:11
字體:
來源:轉載
供稿:網友
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子句的末尾。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 怀化市| 双流县| 安远县| 晴隆县| 兰州市| 刚察县| 常州市| 启东市| 双牌县| 九龙坡区| 康定县| 古蔺县| 尼玛县| 凤城市| 清涧县| 马边| 化隆| 玉屏| 石阡县| 波密县| 越西县| 龙门县| 九寨沟县| 建始县| 江源县| 沧源| 筠连县| 郎溪县| 特克斯县| 施秉县| 盱眙县| 珠海市| 威信县| 邹平县| 威宁| 民县| 陆良县| 精河县| 东方市| 杂多县| 沧州市|