日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL语句执行顺序以及oracle基本查询优化

發(fā)布時間:2024/9/20 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL语句执行顺序以及oracle基本查询优化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.select 列 from 表列表名/視圖列表名 where 條件.
2.select 列 from 表列表名/視圖列表名 where 條件 group by (列列表) having 條件
3.select 列 from 表列表名/視圖列表名 where 條件 group by (列列表) having 條件 order by 列列表
4.select 列 from 表1 join 表2 on 表1.列1=表2.列1...join 表n? on 表n.列1=表(n-1).列1 where 表1.條件 and 表2.條件...表n.條件
執(zhí)行順序:

1. 先where 后select
2. 先where 再group 再having 后select
3. 先where 再group 再having 再select 后order
4. 先join? 再where 后select
第二條是這樣的,如果你提取的字段名里邊包涵有組函數(shù)count,sum函數(shù),必須用group by分組,having是給函數(shù)加條件,就等于二次過濾. 具體的組函數(shù)sql語句定義規(guī)則在下一篇列出
一、sql語句的執(zhí)行步驟:
1)語法分析,分析語句的語法是否符合規(guī)范,衡量語句中各表達式的意義。
2)語義分析,檢查語句中涉及的所有數(shù)據(jù)庫對象是否存在,且用戶有相應的權限。
3)視圖轉換,將涉及視圖的查詢語句轉換為相應的對基表查詢語句。
4)表達式轉換, 將復雜的 SQL 表達式轉換為較簡單的等效連接表達式。
5)選擇優(yōu)化器,不同的優(yōu)化器一般產生不同的“執(zhí)行計劃”
6)選擇連接方式, ORACLE 有三種連接方式,對多表連接 ORACLE 可選擇適當?shù)倪B接方式。
7)選擇連接順序, 對多表連接 ORACLE 選擇哪一對表先連接,選擇這兩表中哪個表做為源數(shù)據(jù)表。
8)選擇數(shù)據(jù)的搜索路徑,根據(jù)以上條件選擇合適的數(shù)據(jù)搜索路徑,如是選用全表搜索還是利用索引或是其他的方式。
9)運行“執(zhí)行計劃”
二、oracle 共享原理:?
????ORACLE將執(zhí)行過的SQL語句存放在內存的共享池(shared buffer pool)中,可以被所有的數(shù)據(jù)庫用戶共享當你執(zhí)行一個SQL語句(有時被稱為一個游標)時,如果它和之前的執(zhí)行過的語句完全相同, ORACLE就能很快獲得已經被解析的語句以及最好的 執(zhí)行路徑. 這個功能大大地提高了SQL的執(zhí)行性能并節(jié)省了內存的使用
三、oracle 語句提高查詢效率的方法:

1: where column in(select * from ... where ...); 2:... where exists (select 'X' from ...where ...); 第二種格式要遠比第一種格式的效率高。在Oracle中可以幾乎將所有的IN操作符子查詢改寫為使用EXISTS的子查詢。

???使用EXIST,Oracle系統(tǒng)會首先檢查主查詢,然后運行子查詢直到它找到第一個匹配項,也就是查出主查詢以后,和子查詢匹配,只要對應就停止查詢,這就節(jié)省了時間,Oracle系統(tǒng)在執(zhí)行IN子查詢時,首先執(zhí)行子查詢,并將獲得的結果列表存放在在一個加了索引的臨時表中。

???避免使用HAVING子句, HAVING 只會在檢索出所有記錄之后才對結果集進行過濾. 這個處理需要排序,總計等操作. 如果能通過WHERE子句限制記錄的數(shù)目,那就能減少這方面的開銷

SQL Select語句完整的執(zhí)行順序:
1、from子句組裝來自不同數(shù)據(jù)源的數(shù)據(jù);
2、where子句基于指定的條件對記錄行進行篩選;
3、group by子句將數(shù)據(jù)劃分為多個分組;
4、使用組函數(shù)進行計算;
5、使用having子句篩選分組;
6、計算所有的表達式;
7、使用order by對結果集進行排序。

總結

以上是生活随笔為你收集整理的SQL语句执行顺序以及oracle基本查询优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。