Oracle 語句優(yōu)化(整理1)

1*號引起的執(zhí)行效率

? ? 盡量減少使用select * 來進行查詢,當你查詢使用*,數(shù)據(jù)庫會進行解析并將*轉(zhuǎn)換為全部列。因此盡量寫明你所需要查詢的字段名。

SELECT * FROM EMP;

SELECT EMP.NO FROM EMP;

2避免在索引列上使用計算

WHERE 子句中,如果索引列是函數(shù)的一部分.優(yōu)化器將不使用索引而使用全表掃描.

舉例 :

低效:

SELECT … FROM DEPT WHERE SAL * 12 > 25000;

高效 :

SELECT … FROM DEPT WHERE SAL > 25000/12;

3用 >= 替代 >

高效 :

SELECT * FROM EMP WHERE DEPTNO >=4

低效 :

SELECT * FROM EMP WHERE DEPTNO >3

兩者的區(qū)別在于 , 前者 DBMS 將直接跳到第一個 DEPT 等于 4 的記錄而后者將首先定位到 DEPTNO=3 的記錄并且向前掃描到第一個 DEPT 大于 3 的記錄 .

4where執(zhí)行順序

where執(zhí)行會從至下往上執(zhí)行

SELECT * FROM STUDENT_INFO SI--學(xué)生信息表

WHERE SI.SCHOOL_ID=10 --學(xué)院ID

AND SI.SYSTEM.ID=100--系ID

擺放where子句時,把能過濾大量數(shù)據(jù)的條件放在最下邊

5from字段中的優(yōu)化:

Oracle安照從右到左的順序加載表數(shù)據(jù),應(yīng)該把可以排除數(shù)據(jù)最多的表放到后面(基礎(chǔ)表)。

比如,在關(guān)聯(lián)查詢中,把課程表放到后面,成績表放到前面,因為課程表數(shù)據(jù)一般比較少,關(guān)聯(lián)的時候可以快速的過濾掉一些成績數(shù)據(jù)。因此把簡單的數(shù)據(jù)少的基礎(chǔ)表放在右側(cè)可以提高速度。

當出現(xiàn)多個表時,關(guān)聯(lián)表被稱之為交叉表,交叉表作為基礎(chǔ)表。

6where執(zhí)行速度比having快

盡可能的使用where代替having,having只會在檢索出所有記錄之后才會對結(jié)果集進行過濾,這個過程需要排序,總計等操作。

7替換

用in 代替or

SELECT UI.USER_NAME

FROM USER_INFO UI--員工信息表

WHERE UI.STUDENT_ID=10

OR UI.STUDENT_ID=20

OR UI.STUDENT_ID=30

改成

SELECT UI.USER_NAME

FROM USER_INFO UI--員工信息表

WHERE UI.STUDENT_ID IN (10,20,30)

執(zhí)行會更有效率。

8優(yōu)化GROUP BY:

提高GROUP BY語句的效率,可以通過將不需要的記錄在GROUP BY之前過濾掉.


關(guān)于索引,感覺里面的問題比較復(fù)雜,還沒有詳細了解。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 5.多表查詢 多表查詢 目的:從多張表獲取數(shù)據(jù) 前提:進行連接的多張表中有共同的列 等連接 通過兩個表具有相同意義...
    喬震閱讀 1,549評論 0 0
  • 查詢是數(shù)據(jù)的一個重要操作。用戶發(fā)送查詢請求,經(jīng)編譯軟件變異成二進制文件供服務(wù)器查詢,后返回查詢結(jié)果集給用戶,查詢會...
    產(chǎn)品小正閱讀 1,535評論 0 2
  • 1. select * from emp; 2. select empno, ename, job from em...
    海納百川_4d26閱讀 1,997評論 0 4
  • mysql數(shù)據(jù)庫中 :database : 文件夾table : 數(shù)據(jù)表(數(shù)據(jù)文件) 進入mysqlmysql -...
    賦閑閱讀 640評論 0 0
  • 1.簡介 數(shù)據(jù)存儲有哪些方式?電子表格,紙質(zhì)文件,數(shù)據(jù)庫。 那么究竟什么是關(guān)系型數(shù)據(jù)庫? 目前對數(shù)據(jù)庫的分類主要是...
    喬震閱讀 2,023評論 0 2

友情鏈接更多精彩內(nèi)容