一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Oracle - oracle select執行順序的詳解

oracle select執行順序的詳解

2019-11-23 19:21oracle教程網 Oracle

本篇文章是對oracle select執行順序進行了詳細的分析介紹,需要的朋友參考下

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子句的末尾。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久中文字幕无线观看 | 亚洲gogo人体大胆西西安徽 | 亚洲同性男男gay1069 | 边摸边吃奶又黄激烈视频韩国 | 丝袜老师好湿好紧我要进去了 | 美女跪式抽搐gif动态图 | 午夜AV亚洲一码二中文字幕青青 | 国产精品色拉拉免费看 | 亚洲色图丝袜 | 国色天香论坛社区在线视频 | 久久性综合亚洲精品电影网 | 成人免费视频播放 | 欧美另类老女人 | 国产精品一级香蕉一区 | 白丝h视频 | 色哟哟国产成人精品 | 亚洲国产精品综合福利专区 | 国产亚洲精品一区二区在线观看 | 日本在线视 | 日韩专区在线观看 | 国产亚洲欧美一区二区三区 | 撕开老师的丝袜白丝扒开粉嫩的小 | 国产第一综合另类色区奇米 | 亚洲第成色999久久网站 | 国产在线欧美日韩精品一区二区 | 手机在线观看网站免费视频 | 99av导航| 黑人同学征服教师麻麻 | 男女福利视频 | 日韩国产成人资源精品视频 | 色老板影视 | 欧美高清在线精品一区二区不卡 | 99热这里只有精品在线观看 | 特a级片| 特黄特色大片免费影院 | 亚洲成年 | 国产成人综合久久 | 欧美国产日韩1区俺去了 | 91麻豆国产福利精品 | 四虎在线永久视频观看 | 色中色导航 |