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

首頁(yè) > 數(shù)據(jù)庫(kù) > Oracle > 正文

ORACLE SQL性能優(yōu)化系列 (五)

2024-08-29 13:31:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

17.       使用表的別名(alias)

當(dāng)在sql語(yǔ)句中連接多個(gè)表時(shí), 請(qǐng)使用表的別名并把別名前綴于每個(gè)column上.這樣一來(lái),就可以減少解析的時(shí)間并減少那些由column歧義引起的語(yǔ)法錯(cuò)誤.

 

(譯者注: column歧義指的是由于sql中不同的表具有相同的column名,當(dāng)sql語(yǔ)句中出現(xiàn)這個(gè)column時(shí),sql解析器無(wú)法判斷這個(gè)column的歸屬)

 

18.       用exists替代in

在許多基于基礎(chǔ)表的查詢中,為了滿足一個(gè)條件,往往需要對(duì)另一個(gè)表進(jìn)行聯(lián)接.在這種情況下, 使用exists(或not exists)通常將提高查詢的效率.

 

低效:

select *

from emp (基礎(chǔ)表)

where empno > 0

and deptno in (select deptno

from dept

where loc = ‘melb’)

   

高效:

select *

from emp (基礎(chǔ)表)

where empno > 0

and exists (select ‘x’

from dept

where dept.deptno = emp.deptno

and loc = ‘melb’)

 

 

 (譯者按: 相對(duì)來(lái)說(shuō),用not exists替換not in 將更顯著地提高效率,下一節(jié)中將指出)

 

 

19.       用not exists替代not in

在子查詢中,not in子句將執(zhí)行一個(gè)內(nèi)部的排序和合并. 無(wú)論在哪種情況下,not in都是最低效的 (因?yàn)樗鼘?duì)子查詢中的表執(zhí)行了一個(gè)全表遍歷).  為了避免使用not in ,我們可以把它改寫成外連接(outer joins)或not exists.

 

例如:

select …

from emp

where dept_no not in (select dept_no

                         from dept

                         where dept_cat=’a’);

 

為了提高效率.改寫為:

 

(方法一: 高效)

select ….

from emp a,dept b

where a.dept_no = b.dept(+)

and b.dept_no is null

and b.dept_cat(+) = ‘a(chǎn)’

 

 

(方法二: 最高效)

select ….

from emp e

where not exists (select ‘x’

                    from dept d

                    where d.dept_no = e.dept_no

                    and dept_cat = ‘a(chǎn)’);

 

(待續(xù))
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 林州市| 扎囊县| 贡嘎县| 宣威市| 新郑市| 克山县| 图木舒克市| 灵璧县| 论坛| 井研县| 广汉市| 怀安县| 江阴市| 鲁山县| 涡阳县| 延吉市| 宁津县| 灌云县| 平泉县| 略阳县| 高尔夫| 闽清县| 新宁县| 宜兰县| 大港区| 梧州市| 修文县| 台州市| 连江县| 万宁市| 兰西县| 漳州市| 江都市| 故城县| 花莲市| 湖南省| 靖安县| 鹤岗市| 黑河市| 盐津县| 郓城县|