国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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

服務器之家 - 數據庫 - Oracle - Oracle SQL性能優化系列學習二

Oracle SQL性能優化系列學習二

2019-10-23 15:05Oracle教程網 Oracle

Oracle SQL性能優化系列學習二

4.選擇最有效率的表名順序(只在基于規則的優化器中有效)

ORACLE的解析器按照從右到左的順序處理FROM子句中的表名,因此FROM子句中寫在最后的表(基礎表drivingtable)將被最先處理.在FROM子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表.當ORACLE處理多個表時,會運用排序及合并的方式連接它們.首先,掃描第一個表(FROM子句中最后的那個表)并對記錄進行派序,然后掃描第二個表(FROM子句中最后第二個表),最后將所有從第二個表中檢索出的記錄與第一個表中合適記錄進行合并.

例如:

表TAB116,384條記錄

表TAB21條記錄

選擇TAB2作為基礎表(最好的方法)

selectcount(*)fromtab1,tab2執行時間0.96秒

選擇TAB2作為基礎表(不佳的方法)

selectcount(*)fromtab2,tab1執行時間26.09秒

如果有3個以上的表連接查詢,那就需要選擇交叉表(intersectiontable)作為基礎表,交叉表是指那個被其他表所引用的表.

例如:

EMP表描述了LOCATION表和CATEGORY表的交集.

SELECT*

FROMLOCATIONL,

CATEGORYC,

EMPE

WHEREE.EMP_NOBETWEEN1000AND2000

ANDE.CAT_NO=C.CAT_NO

ANDE.LOCN=L.LOCN

將比下列SQL更有效率

SELECT*

FROMEMPE,

LOCATIONL,

CATEGORYC

WHEREE.CAT_NO=C.CAT_NO

ANDE.LOCN=L.LOCN

ANDE.EMP_NOBETWEEN1000AND2000

5.WHERE子句中的連接順序.

ORACLE采用自下而上的順序解析WHERE子句,根據這個原理,表之間的連接必須寫在其他WHERE條件之前,那些可以過濾掉最大數量記錄的條件必須寫在WHERE子句的末尾.

例如:(低效,執行時間156.3秒)

SELECT…

FROMEMPE

WHERESAL>50000

ANDJOB=‘MANAGER'

AND25<(SELECTCOUNT(*)FROMEMP

WHEREMGR=E.EMPNO);

(高效,執行時間10.6秒)

SELECT…

FROMEMPE

WHERE25<(SELECTCOUNT(*)FROMEMP

WHEREMGR=E.EMPNO)

ANDSAL>50000

ANDJOB=‘MANAGER';

6.SELECT子句中避免使用‘*‘

當你想在SELECT子句中列出所有的COLUMN時,使用動態SQL列引用‘*'是一個方便的方法.不幸的是,這是一個非常低效的方法.實際上,ORACLE在解析的過程中,會將'*'依次轉換成所有的列名,這個工作是通過查詢數據字典完成的,這意味著將耗費更多的時間.

7.減少訪問數據庫的次數

當執行每條SQL語句時,ORACLE在內部執行了許多工作:解析SQL語句,估算索引的利用率,綁定變量,讀數據塊等等.由此可見,減少訪問數據庫的次數,就能實際上減少ORACLE的工作量.

例如,以下有三種方法可以檢索出雇員號等于0342或0291的職員.

方法1(最低效)

SELECTEMP_NAME,SALARY,GRADE

FROMEMP

WHEREEMP_NO=342;

SELECTEMP_NAME,SALARY,GRADE

FROMEMP

WHEREEMP_NO=291;

方法2(次低效)

DECLARE

CURSORC1(E_NONUMBER)IS

SELECTEMP_NAME,SALARY,GRADE

FROMEMP

WHEREEMP_NO=E_NO;

BEGIN

OPENC1(342);

FETCHC1INTO…,..,..;

…..

OPENC1(291);

FETCHC1INTO…,..,..;

CLOSEC1;

END;

方法3(高效)

SELECTA.EMP_NAME,A.SALARY,A.GRADE,

B.EMP_NAME,B.SALARY,B.GRADE

FROMEMPA,EMPB

WHEREA.EMP_NO=342

ANDB.EMP_NO=291;

注意:

在SQL*Plus,SQL*Forms和Pro*C中重新設置ARRAYSIZE參數,可以增加每次數據庫訪問的檢索數據量,建議值為200。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品国产 | 黄色小视频在线观看 | 欧美 日韩 中文字幕 | 精品国产一区二区在线 | 欧美污污| 欧美做爰一区二区三区 | 国产黄色在线观看 | 中文字幕成人 | 在线视频一区二区三区 | 天操天天干 | 久久久人成影片一区二区三区 | 黄色在线免费观看视频网站 | 中国一级黄色毛片视频 | 色视频在线免费看 | 精品成人在线视频 | 久久久久久国产精品 | 欧美精品福利 | 91精品国产综合久久久久久丝袜 | 久久av一区二区 | 国产精品99在线观看 | 日本激情网 | 国产在线欧美 | 天堂8在线视频 | 亚洲精品久久久久久下一站 | 一级免费视频 | 欧美一级二级视频 | 欧美午夜精品久久久 | 天堂av一区 | 北条麻妃99精品青青久久主播 | 亚洲一本 | 九九热精品在线 | 日本视频免费 | 人人做人人澡人人爽欧美 | 欧美日韩有码 | 国产欧美综合视频 | 欧美精品一级二级 | 国产乱码精品一品二品 | 青青草在线视频免费观看 | 日韩午夜影院 | 国产成人毛片 | 亚州中文字幕蜜桃视频 |